C++中程序窗口显示在最顶层2015-03-06 15:37:44
( 2人已投票,[高质量] )
C++中程序窗口显示在最顶层通常处理方法是让用户选择"总是在最上面"。
最好是在系统菜单里加入一个选项。可以通过修改WM_SYSCOMMAND消息来发送用户的选择。
菜单的命令标识(id)会作为一个参数传给OnSysCommand().要定义标识(id),将如下代码加入到CMainFrame.CPP中:
#define WM_ALWAYSONTOP WM_USER + 1
将"总在最上面"的菜单项加入到系统菜单中,将如下代码加入到函数CMainFrame::OnCreate()中:
CMenu* pSysMenu = GetSystemMenu(FALSE); pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, WM_ALWAYSONTOP,"&Always On Top");
使用ClassWizard,加入对WM_SYSCOMMAND消息的处理,你应该改变消息过滤器,使用系统可以处理这个消息.
void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam) { switch ( nID ) { case WM_ALWAYSONTOP: if ( GetExStyle() & WS_EX_TOPMOST ) { SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); GetSystemMenu(FALSE)->CheckMenuItem(WM_ALWAYSONTOP, MF_UNCHECKED); } else { SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); GetSystemMenu(FALSE)->CheckMenuItem(WM_ALWAYSONTOP,MF_CHECKED); } break; default: CFrameWnd::OnSysCommand(nID, lParam); } }
如此即可实现窗口显示在最顶层。
版权声明:
作者信息(Author) :雪炭网 : 柳岸花明
原文链接(Hyperlink):https://snowcoal.com/article/796.html
原创内容,尊重版权,转载需注明出处;商业及其他特殊用途转载需原作者同意。
原文链接(Hyperlink):https://snowcoal.com/article/796.html
原创内容,尊重版权,转载需注明出处;商业及其他特殊用途转载需原作者同意。
上一篇:C++中控制窗口框架的大小尺寸
下一篇:MFC控制CMenu菜单的大小?