我原先是用对话框实现的,现在想改到单文档程序来实现。
但是
跟踪发现:单文档程序的OnSize(),只有最大化的消息能触发它,最小化的操作没反映!!晕!!
但是
跟踪发现:单文档程序的OnSize(),只有最大化的消息能触发它,最小化的操作没反映!!晕!!
解决方案 »
- VC6.0调试导致死机
- 对话框
- 急求 动态生成控件 解决矩阵输入问题
- 多文件共享公用变量应该放置的位置
- 在其他应用程序的Edit框里响应我定义的快捷键
- Com+组件安装后,能用什么API来修改“安全”页里的“授权”选项?
- CDC中有没有填充扇形的函数
- 从今天开始我的VC之路!多多指教!散分!
- z
- 我在一个工程里搞好了一个菜单,现在在另外一个工程里也要一个完全一样的(连ID定义都要一样).有什么快点的方法么?
- 高手们,我还是没搞清楚,继续问这个WaitForSingleObject是不是永远退不出? 这两个匿名事件一样吗?
- *** 发现一个严重的问题: DLL中的全局共享变量分配的内存, 谁来释放??? (欢迎讨论)
NOTIFYICONDATA nid;
nid.cbSize = sizeof(nid);
nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
nid.hIcon = AfxGetApp()->LoadIcon(IDI_ICON_DOG); strcpy(nid.szTip,"看门狗");
nid.uCallbackMessage = WM_SHOWTASK;
nid.uID = 10;
nid.hWnd = AfxGetApp()->GetMainWnd()->m_hWnd;
Shell_NotifyIcon(NIM_ADD, &nid);
二、SIZE_MAXIMIZED和SIZE_MINIMIZED的值是什么?在哪里可以查到。
二、SIZE_MAXIMIZED和SIZE_MINIMIZED的值是什么?在哪里可以查到。
===============================
1、参考:
void CBCP_SERACHDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else if (nID == SC_MINIMIZE)//最大化
{
CDialog::OnSysCommand(nID, lParam);
}
else if(nID == SC_MAXIMIZE)//最小化
{
CDialog::OnSysCommand(nID, lParam);
}
else if(nID == SC_RESTORE)//还原大小
{
CDialog::OnSysCommand(nID, lParam);
}
else
{
CResizableDialog::OnSysCommand(nID, lParam);
}
}
WM_SIZE不就是对应窗口大小变化的消息吗?怎么又出来了一个OnSysCommand???
LRESULT CXXXX::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{ switch(message)
{
case WM_SYSCOMMAND:
if(LOWORD(wParam)==SC_MINIMIZE)
MessageBox("最小化窗口的按鈕OK!");
break;
}
return CDialog::WindowProc(message, wParam, lParam);
}
//}}AFX_MSG_MAP
ON_WM_SYSCOMMAND()
END_MESSAGE_MAP()
还是不对!!
我重载OnSysCommand函数也还是没反映。是不是单文档和对话框的处理有什么不同呢??
因为是SDI程序应该在CMainFrame中截获消息,如果是MDI程序那么应该在CChildFrame中截获。已经帮你做了修改,注意AfxMessageBox的显示信息即可!