Win32api设置窗口全屏的方法

王朝学院·作者佚名  2016-06-23
窄屏简体版  字體: 小  |  中  |  大  |  超大  

首先是考虑全屏处理的时机,是在创建窗口时还是显示窗口时进行,若是前者,则可以:

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

HWND hWnd;

hInst = hInstance; // 将实例句柄存储在全局变量中

UINT width = GetSystemMetrics(SM_CXSCREEN);

UINT height = GetSystemMetrics(SM_CYSCREEN);

//创建窗口

hWnd=CreateWindow(

szWindowClass,

szTitle,

WS_POPUP,

0,0,

width,height,

NULL,NULL,

hInstance,

NULL);

if (!hWnd)

{

return FALSE;

}

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

return TRUE;

}

若是在显示窗口时进行处理:

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

HWND hWnd;

hInst = hInstance; // 将实例句柄存储在全局变量中

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

if (!hWnd)

{

return FALSE;

}

HWND hDesk;

RECT rc;

hDesk = GetDesktopWindow();

GetWindowRect( hDesk, &rc );

SetWindowLong( hWnd, GWL_STYLE, WS_BORDER );

SetWindowPos( hWnd, HWND_TOPMOST, 0, 0, rc.right, rc.bottom, SWP_SHOWWINDOW);

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

return TRUE;

}

也可以让用户控制全屏的时机,比如按下”ESC“键后进入全屏

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

HWND hWnd;

hInst = hInstance; // 将实例句柄存储在全局变量中

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

if (!hWnd)

{

return FALSE;

}

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd)

return TRUE;

}

在窗口处理函数中对ESC键进行处理:

switch (message)

{

case WM_KEYDOWN:

switch(wParam)

{

case VK_ESCAPE:

{

HWND hDesk;

RECT rc;

hDesk = GetDesktopWindow();

GetWindowRect( hDesk, &rc );

SetWindowLong( hWnd, GWL_STYLE, WS_BORDER );

SetWindowPos( hWnd, HWND_TOPMOST, 0, 0, rc.right, rc.bottom, SWP_SHOWWINDOW);

}

break;

}

return 0;

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航