首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CreateWindowEx发布WM_SIZE?

CreateWindowEx发布WM_SIZE?
EN

Stack Overflow用户
提问于 2015-04-11 02:10:07
回答 1查看 489关注 0票数 1

CreateWindowEx API真的发布了WM_SIZE消息吗?

当我通过CreateWindowEx创建窗口为全屏模式时,

CreateWindowEx发布WM_SIZE,但窗口模式没有。

我的代码将窗口样式设置如下:

代码语言:javascript
复制
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);
}

并更改如下显示设置(全屏模式仅限):

代码语言:javascript
复制
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消息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-11 03:39:49

如果您只是想调整窗口的大小,那么在代码中的某个地方,您应该让ShowWindow(hWnd, nCmdShow);将其更改如下:

代码语言:javascript
复制
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

您也可以在WS_MAXIMIZE中使用CreateWindow,但这可能会使事情复杂化。窗口通常有WS_OVERLAPPEDWINDOWWS_POPUP|WS_CAPTION|WS_SYSMENU。你应该选一个,保持简单。

当窗口大小发生变化时,它会收到WM_SIZE,您可以捕捉到它并检查它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29573270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档