如何让我的mfc应用程序可以在最上面?
生活随笔
收集整理的這篇文章主要介紹了
如何让我的mfc应用程序可以在最上面?
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
如何可以讓我的程序可以顯示在其它的窗口上面?
讓用戶(hù)選擇"總是在最上面"最好是在系統(tǒng)菜單里加入一個(gè)選項(xiàng).可以通過(guò)修改WM_SYSCOMMAND消息來(lái)發(fā)送用戶(hù)的選擇.菜單的命令標(biāo)識(shí)(id)會(huì)作為一個(gè)參數(shù)傳給OnSysCommand().要定義標(biāo)識(shí)(id),將如下代碼加入到CMainFrame.CPP中:
????#define WM_ALWAYSONTOP WM_USER + 1
將"總在最上面"的菜單項(xiàng)加入到系統(tǒng)菜單中,將如下代碼加入到函數(shù)CMainFrame::OnCreate()中:
??????CMenu* pSysMenu = GetSystemMenu(FALSE);
??????pSysMenu->AppendMenu(MF_SEPARATOR);
??????pSysMenu->AppendMenu(MF_STRING, WM_ALWAYSONTOP,
?????????????????????"&Always On Top");
使用ClassWizard,加入對(duì)WM_SYSCOMMAND消息的處理,你應(yīng)該改變消息過(guò)濾器,使用系統(tǒng)可以處理這個(gè)消息.
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);
????}
}
讓用戶(hù)選擇"總是在最上面"最好是在系統(tǒng)菜單里加入一個(gè)選項(xiàng).可以通過(guò)修改WM_SYSCOMMAND消息來(lái)發(fā)送用戶(hù)的選擇.菜單的命令標(biāo)識(shí)(id)會(huì)作為一個(gè)參數(shù)傳給OnSysCommand().要定義標(biāo)識(shí)(id),將如下代碼加入到CMainFrame.CPP中:
????#define WM_ALWAYSONTOP WM_USER + 1
將"總在最上面"的菜單項(xiàng)加入到系統(tǒng)菜單中,將如下代碼加入到函數(shù)CMainFrame::OnCreate()中:
??????CMenu* pSysMenu = GetSystemMenu(FALSE);
??????pSysMenu->AppendMenu(MF_SEPARATOR);
??????pSysMenu->AppendMenu(MF_STRING, WM_ALWAYSONTOP,
?????????????????????"&Always On Top");
使用ClassWizard,加入對(duì)WM_SYSCOMMAND消息的處理,你應(yīng)該改變消息過(guò)濾器,使用系統(tǒng)可以處理這個(gè)消息.
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);
????}
}
總結(jié)
以上是生活随笔為你收集整理的如何让我的mfc应用程序可以在最上面?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 想做一个程序员 这600个单词是你必须掌
- 下一篇: [MATLAB学习笔记]matlab结构