如何让我的mfc应用程序可以在最上面?
生活随笔
收集整理的這篇文章主要介紹了
如何让我的mfc应用程序可以在最上面?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如何可以讓我的程序可以顯示在其它的窗口上面?
讓用戶選擇"總是在最上面"最好是在系統菜單里加入一個選項.可以通過修改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);
????}
}
讓用戶選擇"總是在最上面"最好是在系統菜單里加入一個選項.可以通過修改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);
????}
}
總結
以上是生活随笔為你收集整理的如何让我的mfc应用程序可以在最上面?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 想做一个程序员 这600个单词是你必须掌
- 下一篇: [MATLAB学习笔记]matlab结构