日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

托盘程序开发

發(fā)布時(shí)間:2025/7/25 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 托盘程序开发 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

托盤(pán)程序

OninitDialog()

在主界面的OninitDialog()函數(shù)里添加代碼

BOOL CMFC07trayiconDlg::OnInitDialog() {// TODO: 在此添加額外的初始化代碼NOTIFYICONDATA m_tnid;m_tnid.cbSize = sizeof(NOTIFYICONDATA);//設(shè)置結(jié)構(gòu)大小// m_tnid.hWnd = this->m_hWnd;//設(shè)置圖標(biāo)對(duì)應(yīng)的窗口 m_tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;//圖標(biāo)屬性 m_tnid.uCallbackMessage = WM_ICON_NOTIFY;//應(yīng)用程序定義的回調(diào)消息IDCString szToolTip;szToolTip = _T("INeed 客戶(hù)端程序");_tcscpy_s(m_tnid.szTip, szToolTip);//幫助信息 m_tnid.uID = IDR_MAINFRAME;//應(yīng)用程序圖標(biāo) m_tnid.hIcon = m_hIcon;//圖標(biāo)句柄 PNOTIFYICONDATA m_ptnid = &m_tnid;::Shell_NotifyIcon(NIM_ADD, m_ptnid);//增加圖標(biāo)到系統(tǒng)盤(pán)}

定義一個(gè)自定義的消息。代碼放在主界面【.CPP】文件頂部。

#define WM_ICON_NOTIFY WM_USER+100

關(guān)閉程序后自動(dòng)關(guān)閉托盤(pán)

在主界面對(duì)話(huà)框中的【屬性】-【消息】選項(xiàng)卡里的【W(wǎng)M_CLOSE】添加一OnClose()函數(shù),在程序關(guān)閉后,關(guān)閉托盤(pán)。

void CMFC07trayiconDlg::OnClose() {// TODO: Add your message handler code here and/or call defaultNOTIFYICONDATA nd = { 0 };nd.cbSize = sizeof(NOTIFYICONDATA);nd.hWnd = m_hWnd;nd.uID = IDR_MAINFRAME;nd.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;nd.uCallbackMessage = WM_ICON_NOTIFY;nd.hIcon = m_hIcon;Shell_NotifyIcon(NIM_DELETE, &nd);CDialogEx::OnClose(); }

托盤(pán)最小化支持

在【屬性】-【Minimize Box】設(shè)置為【True】。設(shè)置為支持最小化按鈕。

在OnSyscommand()函數(shù)里,在最后的位置加入

if(nID == SC_MINIMIZE){ShowWindow(FALSE); //隱藏窗口}

OnSysCommand()代碼。

void CMFC07trayiconDlg::OnSysCommand(UINT nID, LPARAM lParam) {if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}if (nID == SC_MINIMIZE){ShowWindow(FALSE); //隱藏窗口} }

定義消息,托盤(pán)菜單實(shí)現(xiàn)

在MFC主界面的CPP文件代碼里找到【BEGIN_MESSAGE_MAP(CMFC07trayiconDlg, CDialogEx)】這個(gè)宏,往里面添加【ON_MESSAGE(WM_ICON_NOTIFY, OnTrayNotification)】,實(shí)現(xiàn)之前自定義消息的宏。

BEGIN_MESSAGE_MAP(CMFC07trayiconDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_CLOSE()ON_MESSAGE(WM_ICON_NOTIFY, OnTrayNotification) // 添加的代碼 END_MESSAGE_MAP()

在主界面的【.h】文件里聲明函數(shù)OnTrayNotification()

LRESULT OnTrayNotification(WPARAM wParam, LPARAM lParam);

定義代碼:

響應(yīng)鼠標(biāo)的左鍵和右鍵消息。

LRESULT CMFC07trayiconDlg::OnTrayNotification(WPARAM wParam, LPARAM lParam) {switch (lParam){case WM_LBUTTONDOWN:{AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOWNORMAL);SetForegroundWindow();break;}case WM_RBUTTONUP:{POINT point;HMENU hMenu, hSubMenu;GetCursorPos(&point); //鼠標(biāo)位置hMenu = LoadMenu(NULL,MAKEINTRESOURCE(IDR_MENU_TRAY)); // 加載菜單hSubMenu = GetSubMenu(hMenu, 0);//得到子菜單(因?yàn)閺棾鍪讲藛问亲硬藛?SetForegroundWindow(); // 激活窗口并置前TrackPopupMenu(hSubMenu, 0,point.x, point.y, 0, m_hWnd, NULL);}}return LRESULT(); }

IDR_MENU_TRAY是加載了一個(gè)菜單,所以要自己自定義【恢復(fù) ID_TRAY_RESTORE】、【退出 ID_TRAY_EXIT】

【恢復(fù) ID_TRAY_RESTORE】,OnTrayRestore()

void CmyfirstmfcDlg::OnTrayRestore() {AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOWNORMAL);SetForegroundWindow(); }

【退出 ID_TRAY_EXIT】,OnTrayExit()

void CMFC07trayiconDlg::OnTrayExit() {// TODO: 在此添加命令處理程序代碼OnClose(); }

轉(zhuǎn)載于:https://www.cnblogs.com/17bdw/p/10354679.html

總結(jié)

以上是生活随笔為你收集整理的托盘程序开发的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。