改变“最大化”按钮的功能
在接收到WM_SYSCOMAND消息时, 若wParam == SC_MAXNIZE, 不想使它最大化,而是自定义一个尺寸,但是用setwindowpos或movewindow都达不到效果,因为调用那两个方法或又会继续发SC_RESORE的消息,造成死循环。 如果我设一个开关去控制它第二次的SC_RESORE什么都不做的话,会什么反应都没有,也就是说上面那次setwindowpos()并没有真正执行;如果第二次让它执行CDialog::OnSysCommand(SC_RESTORE,0)的话,尺寸也会乱,有什么好的方法吗? 问题点数:20、回复次数:2Top
1 楼lixiaosan(小三)回复于 2006-06-01 11:36:37 得分 0
void CTest6Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
if(nID == SC_MAXIMIZE)
{
MoveWindow(...);
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
}Top
2 楼soaroc(会飞的猪)回复于 2006-06-01 17:08:31 得分 0
使用SetWindowLong,可以屏蔽掉系统缺省的消息处理函数,而使用自己的处理函数代替Top




