您的位置:首页 > 其它

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

2012-04-21 17:32 225 查看
首先,在对话框的属性中样式选项中勾选最大化和最小化.接下来:

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实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: