2010-11-01 65 views
0

我正在使用mfc CDialog。我需要显示关闭和最小化/最大化按钮,但不应关闭或最大化对话框。我已经重写OnClose方法并保持对话框打开,即使点击关闭按钮。但我无法阻止对话框的最大化和最小化,因为似乎没有OnMaximize方法。有其他方法吗?阻止CDialog的最大化/最小化按钮的动作

+0

9个问​​题,0接受? – egrunin 2010-11-01 12:58:36

回答

2

您需要处理WM_SYSCOMMAND消息,请注意wParam == SC_MAXIMIZE

如果你抓住了SC_MINIMIZE,你可以做你想做的事情,而不是将它传递给Windows。

msdn

找到这个片段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); 
} 
+0

感谢egrunin ...它像一个魅力......你是一个救世主...感谢:) – 2010-11-01 13:18:40

+0

现在“接受”我的答案,我们都会很高兴:) – egrunin 2010-11-01 13:52:48

0

您无法在您的对话框中显示最小化/最大化图标。您可以通过转到Dialog属性(右键单击Dialog Contorol - > Properties),选择Styles pain并取消选择'Minimize Box','Maximize Box'来实现这一点。

+0

是的谢谢,我知道,但我需要的箱子可见...但行动不应该对他们工作。 – Ashish 2010-11-01 13:15:12

相关问题