我使用的是mfc CDialog。我需要显示关闭和最小化/最大化按钮,但它们不应该关闭或最大化对话框。我重写了OnClose方法,即使单击了close按钮也保持对话框打开。但我无法阻止最大化和最小化对话框,因为似乎没有OnMaximize方法。有没有别的办法?
发布于 2010-11-01 12:53:30
您需要处理WM_SYSCOMMAND
消息,并监视wParam == SC_MAXIMIZE
。
如果你捕捉到了SC_MINIMIZE,你可以做任何你想做的事情,而不是把它传递给Windows。
找到此代码片段here.
const int WM_SYSCOMMAND= 0x0112;
const int SC_MAXIMIZE= 0xF030;
protected override void WndProc(ref Message m)
{
if(m.Msg==WM_SYSCOMMAND)
{
if((int)m.WParam==SC_MAXIMIZE)
{
MessageBox.Show("Maximized!!");
return; // swallow the message
}
}
base.WndProc (ref m);
}
发布于 2010-11-01 12:52:54
对话框中根本不能显示最小化/最大化图标。你可以通过进入对话框属性(右击你的对话框控制-->属性),选择Styles pain并取消选择‘最小化框’,‘最大化框’。
https://stackoverflow.com/questions/4068937
复制