當前位置:編程學習大全網 - 源碼下載 - MFC基於對話框中, 怎麽去讓它最小化到系統托盤運行,點擊圖標後會顯示出主界面?

MFC基於對話框中, 怎麽去讓它最小化到系統托盤運行,點擊圖標後會顯示出主界面?

1:在XXXDlg.h中增加成員變量

NOTIFYICONDATA nid;

增加消息函數聲明,就放在其他很多的afx_msg系列函數壹起就行:

afx_msg void OnNotifyIcon(WPARAM, LPARAM);

2:在cpp中修改如下內容:

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

在以上內容段下面增加如下自定義消息定義

#define WM_NOTIFY_ICON WM_USER + 101

BEGIN_MESSAGE_MAP(CNotifyIconDlg, CDialog)

//{{AFX_MSG_MAP(CNotifyIconDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_MESSAGE(WM_NOTIFY_ICON, OnNotifyIcon) 在這段函數中增加這句消息映射

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

找到這段函數,並修改成這樣

void CNotifyIconDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

if (nID == SC_MINIMIZE)

{

ShowWindow(SW_HIDE);

ZeroMemory(&nid, sizeof(nid));

nid.cbSize = sizeof(NOTIFYICONDATA);

nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

nid.hWnd = m_hWnd;

strcpy(nid.szTip, "提示信息");

nid.uCallbackMessage = WM_NOTIFY_ICON;

nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;

Shell_NotifyIcon(NIM_ADD, &nid);

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

}

cpp文件末尾增加如下函數:

void CNotifyIconDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)

{

if (lParam == WM_LBUTTONDOWN || lParam == WM_RBUTTONDOWN)

{

ShowWindow(SW_SHOW);

}

}

這個函數通過編譯器的向導生成框架,並增加Shell_NotifyIcon這句

BOOL CNotifyIconDlg::DestroyWindow()

{

// TODO: Add your specialized code here and/or call the base class

Shell_NotifyIcon(NIM_DELETE, &nid);

return CDialog::DestroyWindow();

}

以上是VC++6.0實現

  • 上一篇:地下水動態監測網
  • 下一篇:蘋果cms10哪個模板好用些,容易被收錄又美觀?
  • copyright 2024編程學習大全網