点任务栏会有什么消息 基于DLG程序exe正常显示时,点击任务栏,想让它最小化,再点击任务栏图标,恢复正常,求点任务栏会触发什么消息,求代码或方法,求解:点击任务栏图标,让它最小化???????在线等。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在OnSize消息事件中处理最小化 SIZE_MINIMIZED,最大化 SIZE_MAXIMIZED,还原 SIZE_RESTORED,例如:void CMainDlg::OnSize(UINT nType, int cx, int cy) {CDialog::OnSize(nType, cx, cy);// TODO: Add your message handler code here//::SendMessage(g_hMain,WM_FORM_RESIZE,0,0);if (nType== SIZE_MAXIMIZED) { //在这里添加最小化需要处理的事件 // ::SendMessage(g_hMain,WM_FORM_RESIZE,0,0);}if (nType==SIZE_RESTORED) { //在这里添加还原时需要处理的事件 // ::SendMessage(g_hMain,WM_FORM_RESIZE,0,0);}}找到了 处理WM_SYSCOMMAND消息void CXXXDlg::OnSysCommand(UINT nID, LPARAM lParam){ if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { switch(nID) { case SC_MAXIMIZE: AfxMessageBox(_T("Zoom")); break; case SC_RESTORE: AfxMessageBox(_T("Restore")); break; case SC_MINIMIZE: AfxMessageBox(_T("Icon")); break; } CDialog::OnSysCommand(nID, lParam); }} 在对话框的属性编辑器里选上Minimize Box属性自然就会实现这个功能 在对话框的属性编辑器里选上Minimize Box属性自然就会实现这个功能 不行:modifyStyle(m_hWnd,0,WS_SYSMENU,WS_POPUP|WS_MAXIMIZE|WS_MINIMIZEBOX);无效,无边框的对话框程序 看这个帖吧!一样的问题。http://topic.csdn.net/u/20101027/14/975337dd-ab92-477c-a5ae-464e2960d0d7.html动手试试 我是新手刚做了和你功能一样的 小程序!左键:点击任务栏,想让它最小化,再点击任务栏图标,恢复正常。再点击又最小化,点击又还原,。。循环下去右键:弹出菜单退出 我这里有Vc 2005编译的代码 发给你:LRESULT CUpDataDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam){ if (lParam==WM_LBUTTONDOWN) { if (::IsWindowVisible(NotifyIcon.hWnd)) { ::ShowWindow(NotifyIcon.hWnd, SW_HIDE); } else ::ShowWindow(NotifyIcon.hWnd, SW_SHOW); return 0; } CMenu menu; if (!menu.LoadMenu(IDR_MENU1)) return 0; CMenu* pmenu = menu.GetSubMenu(0); if (!pmenu) return 0; else if(lParam==WM_RBUTTONDOWN) { CPoint pos; GetCursorPos(&pos); ASSERT(pmenu!=NULL); SetForegroundWindow(); pmenu->TrackPopupMenu(TPM_RIGHTBUTTON|TPM_LEFTALIGN,pos.x,pos.y,this); } return 1; } 在dlg初始化的时候:SetNotifyWnd(this, WM_NOTIFICATION);NotifyIcon.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CUpDataDlg::SetNotifyWnd(CWnd *pNotifyWnd, UINT uCbMsg){ ASSERT(pNotifyWnd); ASSERT(::IsWindow(pNotifyWnd->GetSafeHwnd())); NotifyIcon.hWnd=pNotifyWnd->GetSafeHwnd(); ASSERT(!(uCbMsg==0 )&& uCbMsg >=WM_USER); NotifyIcon.uCallbackMessage=uCbMsg;} modifyStyle(m_hWnd,0,WS_SYSMENU|WS_MINIMIZEBOX,WS_POPUP|WS_MAXIMIZE); ModifyStyle(NULL, WS_MINIMIZEBOX); 就只增加这个属性就可以 新手请教一个MFC的设计思路 航空票务的黑屏系统相关问题 error C2447: missing function header (old-style formal list?) LoadResource 问题 请问如何自创建CFrmaeWnd? 一个关于TCP发送数据的问题 关于SCROLLBAR的问题 谁能给我几个有关控件的网址 图论的问题 使用HTMLDocument解析html数据 VC运行出状况,请大家帮忙解决下 恢复画笔的作用?
最大化 SIZE_MAXIMIZED,
还原 SIZE_RESTORED,例如:void CMainDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);// TODO: Add your message handler code here
//::SendMessage(g_hMain,WM_FORM_RESIZE,0,0);
if (nType== SIZE_MAXIMIZED)
{
//在这里添加最小化需要处理的事件
// ::SendMessage(g_hMain,WM_FORM_RESIZE,0,0);
}
if (nType==SIZE_RESTORED)
{
//在这里添加还原时需要处理的事件
// ::SendMessage(g_hMain,WM_FORM_RESIZE,0,0);
}
}找到了
void CXXXDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
switch(nID)
{
case SC_MAXIMIZE:
AfxMessageBox(_T("Zoom"));
break;
case SC_RESTORE:
AfxMessageBox(_T("Restore"));
break; case SC_MINIMIZE:
AfxMessageBox(_T("Icon"));
break;
}
CDialog::OnSysCommand(nID, lParam);
}
}
modifyStyle(m_hWnd,0,WS_SYSMENU,WS_POPUP|WS_MAXIMIZE|WS_MINIMIZEBOX);无效,无边框的对话框程序
http://topic.csdn.net/u/20101027/14/975337dd-ab92-477c-a5ae-464e2960d0d7.html
动手试试
左键:
点击任务栏,想让它最小化,再点击任务栏图标,恢复正常。再点击又最小化,点击又还原,。。循环下去
右键:
弹出菜单退出 我这里有Vc 2005编译的代码 发给你:
LRESULT CUpDataDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
{
if (lParam==WM_LBUTTONDOWN)
{
if (::IsWindowVisible(NotifyIcon.hWnd))
{
::ShowWindow(NotifyIcon.hWnd, SW_HIDE);
}
else
::ShowWindow(NotifyIcon.hWnd, SW_SHOW);
return 0;
}
CMenu menu;
if (!menu.LoadMenu(IDR_MENU1))
return 0;
CMenu* pmenu = menu.GetSubMenu(0);
if (!pmenu)
return 0;
else if(lParam==WM_RBUTTONDOWN)
{
CPoint pos;
GetCursorPos(&pos);
ASSERT(pmenu!=NULL);
SetForegroundWindow();
pmenu->TrackPopupMenu(TPM_RIGHTBUTTON|TPM_LEFTALIGN,pos.x,pos.y,this); }
return 1;
}
SetNotifyWnd(this, WM_NOTIFICATION);
NotifyIcon.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CUpDataDlg::SetNotifyWnd(CWnd *pNotifyWnd, UINT uCbMsg)
{
ASSERT(pNotifyWnd);
ASSERT(::IsWindow(pNotifyWnd->GetSafeHwnd()));
NotifyIcon.hWnd=pNotifyWnd->GetSafeHwnd();
ASSERT(!(uCbMsg==0 )&& uCbMsg >=WM_USER);
NotifyIcon.uCallbackMessage=uCbMsg;
}