阻止CDialog的最大化/最小化按钮的动作

时间:2010-11-01 12:41:34

标签: visual-c++ mfc

我正在使用mfc CDialog。我需要显示关闭和最小化/最大化按钮,但它们不应关闭或最大化对话框。我已经覆盖了OnClose方法,即使单击关闭按钮也会保持对话框打开。但我无法阻止对话框的最大化和最小化,因为似乎没有OnMaximize方法。还有另一种方法吗?

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您无法在对话框中显示最小化/最大化图标。你可以通过转到Dialog属性(右击你的Dialog Contorol - >属性),选择样式痛苦并取消选择'Minimize Box','Maximize Box'来实现。