Как я могу заставить мою программу делать действительно полноэкранный просмотр в VC ++? - PullRequest
1 голос
/ 07 октября 2009

Как я могу сделать настоящий полноэкранный режим в VC ++?

Код:

#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     static TCHAR szAppName[] = TEXT ("screen") ;
     HWND         hwnd ;
     MSG          msg ;
     WNDCLASS     wndclass ;

     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;

     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("Program requires Windows NT!"), 
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }

     hwnd = CreateWindow (szAppName, TEXT ("Digital Clock"),
                          WS_POPUP|WS_DLGFRAME|WS_VISIBLE, // _OVERLAPPEDWINDOW| WS_MAXIMIZE,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          NULL, NULL, hInstance, NULL) ;

     ShowWindow (hwnd, SW_MAXIMIZE);// iCmdShow) ;
     UpdateWindow (hwnd) ;

     while (GetMessage (&msg, NULL, 0, 0))
          {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
          }
     return msg.wParam ;
     }

Ответы [ 4 ]

1 голос
/ 07 октября 2009

См. Может ли окно быть всегда поверх только одного другого окна?

В случае множественного окна, установленного AlwaysOnTop; чем только это окно останется сверху, которое было перенесено сверху. Например, есть два окна Window1 и Window2; тогда, когда вы запустите window1.exe, это будет окно сверху; и когда вы запускаете window2.exe, тогда это окно будет сверху, это поведение по умолчанию.

В противном случае, если вы не хотите, чтобы какое-либо другое окно появлялось сверху, вам придется искать другие приложения, вызываемые после вашего, а затем, вероятно, каким-то образом подключить эти окна и, возможно, вызвать событие Minimize, чтобы отправить его панель задач.

1 голос
/ 07 октября 2009

Разве

SetWindowPos( hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );

не помещает его поверх панели задач?

1 голос
/ 07 октября 2009

Проверьте эту функцию и посмотрите определение WS_EX_TOPMOST ...

1 голос
/ 07 октября 2009

В играх обычно используется DirectX , который имеет режим, который использует исключительно видеовыход - это означает, что никакое другое окно (или панель задач) не может отображаться на экране, и весь экран доступен для приложения. с любым разрешением и глубиной цвета, которые вы хотите (почти все, что поддерживает видеокарта).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...