Полноэкранное окно Windows CE 5.0 только с Windows API - PullRequest
4 голосов
/ 02 июля 2010

Я пытаюсь написать полноэкранное приложение для Windows CE 5.0. Я использую CEGCC под Linux для компиляции своего приложения, поэтому я ограничен Windows API - то есть, никаких модных дизайнеров GUI, ни Visual Studio, ни MFC, ни .NET.

Пока что я попробовал пример Microsoft, используя SHFullScreen , но безуспешно. Я не хочу скрывать панель задач глобально (т.е. я хочу, чтобы она работала нормально, когда мое приложение закрывается, или я должен сказать, падает и не может восстановить свое состояние).

Есть идеи на этот счет? Простая программа, которая делает это (наверняка, не просто «я так думаю»), то есть отображает окно в Windows CE 5.0 (или любой Windows CE / Mobile / Embedded, я полагаю, так что у меня по крайней мере есть подсказка), которое расширяется очень полезен верхний левый угол в нижнем правом углу экрана над панелью задач.

Google не сильно мне помог, если вы спрашиваете (но, возможно, я не использовал правильные термины сегодня).

Приветствия

Ответы [ 3 ]

2 голосов
/ 02 июля 2010

Панель задач должна быть выше всех окон и не зависеть от процесса, поэтому, чтобы получить эффект «полного экрана», вы должны скрыть ее.

Вот версия C # , которую легко конвертировать в C (так как в любом случае это в основном P / Invoking C).

Ваше приложение, безусловно, может изменить это, когда оно завершает работу (и должно), но в случае его сбоя оболочка не может просто «узнать», что ему нужно для восстановления панели задач. Конечно, если вы управляете ОС, вы всегда можете создать новую оболочку, которая будет отслеживать этот sceanrio, но я бы посоветовал вам попытаться сделать так, чтобы ваше приложение не зависало .

1 голос
/ 09 июля 2010

Мне удалось решить все мои требования, поместив это в WndProc в case WM_CREATE:

int ScreenWidth = GetSystemMetrics(SM_CXSCREEN);
int ScreenHeight = GetSystemMetrics(SM_CYSCREEN);

SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, ScreenWidth, ScreenHeight, 0);
HWND TaskBarWnd = FindWindow("HHTaskBar", "");
if (TaskBarWnd != NULL)
    SetWindowPos(TaskBarWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE);
1 голос
/ 03 июля 2010

Вы можете использовать Структурированная обработка исключений (SEH) для восстановления панели задач перед сбоем.

...