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实现
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实现
相关文章推荐
- MFC基于对话框最小化到托盘,并鼠标右键添加菜单以及对应菜单功能
- MFC(3):MFC对话框添加最大化功能
- MFC中 给基于对话框的应用程序添加登陆界面
- MFC 对话框 运用mysql数据库 制作登录界面,记住密码功能
- MFC一运行最小化,去除或添加该功能
- MFC中界面按钮调用(显示)对话框功能实现
- 在MFC对话框界面中添加工具栏,控制条
- MFC添加消息、隐藏对话框项目界面
- MFC界面库BCGControlBar v25.0新功能详解五之对话框和表单等
- MFC中实现对话框最小化到托盘功能
- MFC中 给基于对话框的应用程序添加登陆界面
- MFC对话框添加菜单项,最大化,最小化
- MFC 对话框应用程序去掉标题栏如何添加鼠标移动功能
- MFC对话框添加菜单项,最大化,最小化
- MFC为对话框添加背景图片(非picture control控件)
- vs2008下 MFC-Tab页子对话框中添加ocx控件 引起问题
- MFC之对话框 添加状态栏 实时显示时间
- 如何给MFC对话框添加背景图片
- VS2013/MFC编程入门之六(对话框:为对话框添加控件)
- mfc中怎样在一个基于对话框程序中添加菜单栏