日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

MFC最小化到系统托盘

發布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC最小化到系统托盘 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在VC++中,想實現將MFC最小化到系統托盤,需要調用NOTIFYICONDATA類,并注冊相應的消息,以下詳細講解如何實現:

??? 第一步,聲明一個NOTIFYICONDATA類,也就是NOTIFYICONDATA NotifyIcon;該句可以放在Dlg類的聲明中,作為Dlg類的一個成員;也可以放在Dlg類的實現中,作為全局變量來使用。
??? 第二步,聲明一個響應函數afx_msg void OnNotifyIcon(WPARAM wParam,LPARAM IParam);用于響應鼠標操作。將這個函數放入Dlg類的聲明中,作為Dlg類的一個成員。
??? 第三步,定義消息名稱以消息號,并注冊消息,該步很重要!我就是因為沒有注冊消息,導致調試了很久都找不到問題所在。該步都是在Dlg.cpp(Dlg的實現中)中操作。定義消息名稱和消息號:#define WM_NC (WM_USER+1001),1001只是用于指定一個消息號,可以隨便指定。注冊則是在BEGIN_MESSAGE_MAP(Dlg,CDialog)和END_MESSAGE_MAP()之間添加ON_MESSAGE(WM_NC,OnNotifyIcon)。
??? 第四步,在要將MFC最小化到系統托盤的函數中添加如下代碼:

void MinDialog()
{
NotifyIcon.cbSize
=sizeof(NOTIFYICONDATA);
NotifyIcon.hIcon
=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
NotifyIcon.hWnd
=m_hWnd;
lstrcpy(NotifyIcon.szTip,_T(
"NotifyIcon Test"));
NotifyIcon.uCallbackMessage
=WM_NC;
NotifyIcon.uFlags
=NIF_ICON | NIF_MESSAGE | NIF_TIP;
Shell_NotifyIcon(NIM_ADD,
&NotifyIcon);
}

  


??? 有了上面的代碼,當程序運行到含有如上代碼的函數時就會在系統托盤處添加一個圖標,想隱藏主對話框,就再添加一句ShowWindow(SW_HIDE);這樣就實現了將MFC最小化到系統托盤。但還要添加點擊托盤圖標時響應鼠標的函數,也就是第二步中的函數OnNotifyIcon。
??? 第五步,OnNotifyIcon函數,如下:

    void CDlg::OnNotifyIcon(WPARAM wParam,LPARAM IParam)
{
if ((IParam == WM_LBUTTONDOWN) || (IParam == WM_RBUTTONDOWN))
{
ModifyStyleEx(
0,WS_EX_TOPMOST);
ShowWindow(SW_SHOW);
//Shell_NotifyIcon(NIM_DELETE, &NotifyIcon);//消除托盤圖標
}
}

  


??? 以上函數寫的很簡單,因為我定義的是基于對話框的MFC,沒有添加menu,所以只是實現了簡單的點擊托盤圖標就彈出主對話框。對于右鍵點擊托盤圖標彈出小menu,然后選擇操作,最好是建立工程的時候就選擇基于菜單的MFC,這樣會容易很多,詳細的我自己還沒有研究,就不亂講了。對于上面函數中Shell_NotifyIcon(NIM_DELETE,&NotifyIcon)一句,是清除托盤圖標,在這里可以沒有,但在退出整個程序的時候一定要加上,不然程序退出了,托盤處還有一個圖標,只有鼠標指到那里時系統才會發現是進程殘留而清除,這種做法很不好!

轉載于:https://www.cnblogs.com/flonlen/archive/2011/09/12/2174259.html

總結

以上是生活随笔為你收集整理的MFC最小化到系统托盘的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。