CreateWindowEx 帖子 WM_SIZE?
CreateWindowEx posts WM_SIZE?
CreateWindowEx
API 真的发布了 WM_SIZE
消息?
当我通过 CreateWindowEx
创建 window 作为 全屏模式时 ,
CreateWindowEx
发布 WM_SIZE
但 window 模式 没有。
我的代码设置 window 样式如下:
if(bFullscr)
{
//When the window is in full screen mode.
nStyle = WS_POPUP;
nExtraStyle = WS_EX_APPWINDOW;
}
else
{
//Otherwise.
nStyle = WS_OVERLAPPEDWINDOW;
nExtraStyle = (WS_EX_APPWINDOW | WS_EX_WINDOWEDGE);
}
并像这样更改显示设置(仅全屏模式):
if(bFullscr)
{
DEVMODE sScrSet;
memset(&sScrSet, 0, sizeof(DEVMODE));
sScrSet.dmSize = sizeof(DEVMODE);
sScrSet.dmPelsWidth = nWidth;
sScrSet.dmPelsHeight = nHeight;
sScrSet.dmBitsPerPel = nColorBit;
sScrSet.dmFields = (DM_BITSPERPEL | DM_PELSHEIGHT | DM_PELSWIDTH);
if(ChangeDisplaySettings(&sScrSet, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
{
//Error routine.
}
}
我真的很奇怪为什么 CreateWindowEx
有选择地发布 WM_SIZE
消息。
如果您只是想调整 window 的大小,您应该 ShowWindow(hWnd, nCmdShow);
在代码的某处更改它,如下所示:
ShowWindow(hWnd, SW_SHOWDEFAULT);//show normal
ShowWindow(hWnd, SW_SHOWMAXIMIZED);//show maximized (full screen)
SetWindowPos(hWnd, NULL, 10, 10, 300, 300, SWP_SHOWWINDOW);//show at specific position
您也可以在 CreateWindow 中使用 WS_MAXIMIZE
,但这会使事情复杂化。 Window通常有WS_OVERLAPPEDWINDOW
或WS_POPUP|WS_CAPTION|WS_SYSMENU
。你应该选择一个并保持简单。
当 Window 大小改变时,它接收 WM_SIZE
,你可以捕捉并检查它。
CreateWindowEx
API 真的发布了 WM_SIZE
消息?
当我通过 CreateWindowEx
创建 window 作为 全屏模式时 ,
CreateWindowEx
发布 WM_SIZE
但 window 模式 没有。
我的代码设置 window 样式如下:
if(bFullscr)
{
//When the window is in full screen mode.
nStyle = WS_POPUP;
nExtraStyle = WS_EX_APPWINDOW;
}
else
{
//Otherwise.
nStyle = WS_OVERLAPPEDWINDOW;
nExtraStyle = (WS_EX_APPWINDOW | WS_EX_WINDOWEDGE);
}
并像这样更改显示设置(仅全屏模式):
if(bFullscr)
{
DEVMODE sScrSet;
memset(&sScrSet, 0, sizeof(DEVMODE));
sScrSet.dmSize = sizeof(DEVMODE);
sScrSet.dmPelsWidth = nWidth;
sScrSet.dmPelsHeight = nHeight;
sScrSet.dmBitsPerPel = nColorBit;
sScrSet.dmFields = (DM_BITSPERPEL | DM_PELSHEIGHT | DM_PELSWIDTH);
if(ChangeDisplaySettings(&sScrSet, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
{
//Error routine.
}
}
我真的很奇怪为什么 CreateWindowEx
有选择地发布 WM_SIZE
消息。
如果您只是想调整 window 的大小,您应该 ShowWindow(hWnd, nCmdShow);
在代码的某处更改它,如下所示:
ShowWindow(hWnd, SW_SHOWDEFAULT);//show normal
ShowWindow(hWnd, SW_SHOWMAXIMIZED);//show maximized (full screen)
SetWindowPos(hWnd, NULL, 10, 10, 300, 300, SWP_SHOWWINDOW);//show at specific position
您也可以在 CreateWindow 中使用 WS_MAXIMIZE
,但这会使事情复杂化。 Window通常有WS_OVERLAPPEDWINDOW
或WS_POPUP|WS_CAPTION|WS_SYSMENU
。你应该选择一个并保持简单。
当 Window 大小改变时,它接收 WM_SIZE
,你可以捕捉并检查它。