怎么响应多文档窗口最小化消息呢? 用MFC创建多文档程序, 现在想响应最小化消息, 把程序缩小到托盘, 怎么来响应该最小化时的消息呢?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 托盘实现最大化最小化的例子,希望对你有帮助http://www.codeproject.com/KB/shell/systemtray.aspx 响应CMainFrame的WM_SYSCOMMAND消息:void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam) { // TODO: Add your message handler code here and/or call default if ((nID & 0xFFF0) == SC_MINIMIZE ) { ShowWindow(SW_HIDE); Shell_NotifyIcon(NIM_ADD,&m_traydata); } else CFrameWnd::OnSysCommand(nID, lParam); }定义:NOTIFYICONDATA m_traydata;在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中加:m_traydata.cbSize = sizeof(NOTIFYICONDATA);m_traydata.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);//IDR_MAINFRAME图标m_traydata.hWnd = m_hWnd;char *m_str = "系统管理";strncpy(m_traydata.szTip,m_str,strlen(m_str)+1);//strlen +1表示将空字符拷贝到目标字符串中m_traydata.uCallbackMessage = WM_TRARMESSAGE;m_traydata.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;写自定义消息:#define WM_TRARMESSAGE 201afx_msg void OnTrayMessage(WPARAM wParam, LPARAM lParam);void CMainFrame::OnTrayMessage(WPARAM wParam, LPARAM lParam){ if (lParam == WM_LBUTTONDOWN) { ShowWindow(SW_RESTORE); } else if (lParam == WM_RBUTTONDOWN) { CPoint m_point; ::GetCursorPos(&m_point); CMenu m_popmenu; m_popmenu.LoadMenu(IDR_MAINFRAME);//菜单ID CMenu* m_submenu = m_popmenu.GetSubMenu(0); m_submenu->TrackPopupMenu(TPM_LEFTBUTTON |TPM_LEFTALIGN ,m_point.x,m_point.y,this); } } 响应CMainFrame的WM_SYSCOMMAND消息:void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam) { // TODO: Add your message handler code here and/or call default if ((nID & 0xFFF0) == SC_MINIMIZE ) { ShowWindow(SW_HIDE); Shell_NotifyIcon(NIM_ADD,&m_traydata); } else CFrameWnd::OnSysCommand(nID, lParam); }定义:NOTIFYICONDATA m_traydata;在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中加:m_traydata.cbSize = sizeof(NOTIFYICONDATA);m_traydata.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);//IDR_MAINFRAME图标m_traydata.hWnd = m_hWnd;char *m_str = "系统管理";strncpy(m_traydata.szTip,m_str,strlen(m_str)+1);//strlen +1表示将空字符拷贝到目标字符串中m_traydata.uCallbackMessage = WM_TRARMESSAGE;m_traydata.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;写自定义消息:#define WM_TRARMESSAGE 201afx_msg void OnTrayMessage(WPARAM wParam, LPARAM lParam);void CMainFrame::OnTrayMessage(WPARAM wParam, LPARAM lParam){ if (lParam == WM_LBUTTONDOWN) { ShowWindow(SW_RESTORE); } else if (lParam == WM_RBUTTONDOWN) { CPoint m_point; ::GetCursorPos(&m_point); CMenu m_popmenu; m_popmenu.LoadMenu(IDR_MAINFRAME);//菜单ID CMenu* m_submenu = m_popmenu.GetSubMenu(0); m_submenu->TrackPopupMenu(TPM_LEFTBUTTON |TPM_LEFTALIGN ,m_point.x,m_point.y,this); } } VC关闭程序时总是提示“试图执行系统不支持的操作” umd文件格式! 小弟求救,请求各位大虾介绍几本学习vc网络编程的书?? 求助:InstallShield 添加组件的问题 UDP广播接收.给点简单代码. 如何编程实现net send的功能? CRichEditCtrl问题!!!我想能够实时知道CRichEditCtrl的内容被修改!!! 请问在VC中如何画箭头?我只会画直线,直线前接个箭头怎么画? 各位帮忙 MFC下仿QQ农场下面的异形菜单 MFC ActiveX 实例问题 求助:各位大哥,这个错误是什么引起的?谢谢!
http://www.codeproject.com/KB/shell/systemtray.aspx
void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
// TODO: Add your message handler code here and/or call default
if ((nID & 0xFFF0) == SC_MINIMIZE )
{
ShowWindow(SW_HIDE);
Shell_NotifyIcon(NIM_ADD,&m_traydata);
}
else CFrameWnd::OnSysCommand(nID, lParam);
}定义:
NOTIFYICONDATA m_traydata;
在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中加:
m_traydata.cbSize = sizeof(NOTIFYICONDATA);
m_traydata.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);//IDR_MAINFRAME图标
m_traydata.hWnd = m_hWnd;
char *m_str = "系统管理";
strncpy(m_traydata.szTip,m_str,strlen(m_str)+1);//strlen +1表示将空字符拷贝到目标字符串中
m_traydata.uCallbackMessage = WM_TRARMESSAGE;
m_traydata.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;写自定义消息:
#define WM_TRARMESSAGE 201afx_msg void OnTrayMessage(WPARAM wParam, LPARAM lParam);
void CMainFrame::OnTrayMessage(WPARAM wParam, LPARAM lParam)
{
if (lParam == WM_LBUTTONDOWN)
{
ShowWindow(SW_RESTORE);
}
else if (lParam == WM_RBUTTONDOWN)
{
CPoint m_point;
::GetCursorPos(&m_point);
CMenu m_popmenu;
m_popmenu.LoadMenu(IDR_MAINFRAME);//菜单ID
CMenu* m_submenu = m_popmenu.GetSubMenu(0);
m_submenu->TrackPopupMenu(TPM_LEFTBUTTON |TPM_LEFTALIGN ,m_point.x,m_point.y,this);
} }
void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
// TODO: Add your message handler code here and/or call default
if ((nID & 0xFFF0) == SC_MINIMIZE )
{
ShowWindow(SW_HIDE);
Shell_NotifyIcon(NIM_ADD,&m_traydata);
}
else CFrameWnd::OnSysCommand(nID, lParam);
}定义:
NOTIFYICONDATA m_traydata;
在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中加:
m_traydata.cbSize = sizeof(NOTIFYICONDATA);
m_traydata.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);//IDR_MAINFRAME图标
m_traydata.hWnd = m_hWnd;
char *m_str = "系统管理";
strncpy(m_traydata.szTip,m_str,strlen(m_str)+1);//strlen +1表示将空字符拷贝到目标字符串中
m_traydata.uCallbackMessage = WM_TRARMESSAGE;
m_traydata.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;写自定义消息:
#define WM_TRARMESSAGE 201afx_msg void OnTrayMessage(WPARAM wParam, LPARAM lParam);
void CMainFrame::OnTrayMessage(WPARAM wParam, LPARAM lParam)
{
if (lParam == WM_LBUTTONDOWN)
{
ShowWindow(SW_RESTORE);
}
else if (lParam == WM_RBUTTONDOWN)
{
CPoint m_point;
::GetCursorPos(&m_point);
CMenu m_popmenu;
m_popmenu.LoadMenu(IDR_MAINFRAME);//菜单ID
CMenu* m_submenu = m_popmenu.GetSubMenu(0);
m_submenu->TrackPopupMenu(TPM_LEFTBUTTON |TPM_LEFTALIGN ,m_point.x,m_point.y,this);
} }