MFC界面(一)在对话框上添加最小化功能.

来源:互联网 发布:linux oracle 安装 编辑:程序博客网 时间:2024/06/07 06:37

首先,在对话框的属性中样式选项中勾选最大化和最小化.接下来:

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实现

原创粉丝点击