【发布时间】:2010-11-01 12:41:33
【问题描述】:
我正在使用 mfc CDialog。我需要显示关闭和最小化/最大化按钮,但它们不应该关闭或最大化对话框。我已经覆盖了 OnClose 方法并保持对话框打开,即使单击关闭按钮也是如此。但我无法阻止对话框的最大化和最小化,因为似乎没有 OnMaximize 方法。有替代方法吗?
【问题讨论】:
标签: visual-c++ mfc
我正在使用 mfc CDialog。我需要显示关闭和最小化/最大化按钮,但它们不应该关闭或最大化对话框。我已经覆盖了 OnClose 方法并保持对话框打开,即使单击关闭按钮也是如此。但我无法阻止对话框的最大化和最小化,因为似乎没有 OnMaximize 方法。有替代方法吗?
【问题讨论】:
标签: visual-c++ mfc
您需要处理WM_SYSCOMMAND 消息,注意wParam == SC_MAXIMIZE。
如果你抓住了 SC_MINIMIZE,你可以做你想做的,而不是把它传递给 Windows。
找到这个sn-p 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);
}
【讨论】:
您根本无法在对话框中显示最小化/最大化图标。您可以通过转到对话框属性(右键单击您的对话框控件-> 属性),选择样式痛苦并取消选择“最小化框”,“最大化框”。
【讨论】: