【问题标题】:Blocking action of CDialog's maximize/minimize buttonCDialog的最大化/最小化按钮的阻塞动作
【发布时间】:2010-11-01 12:41:33
【问题描述】:

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

【问题讨论】:

    标签: visual-c++ mfc


    【解决方案1】:

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

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

    msdn

    找到这个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);
    }
    

    【讨论】:

    • 谢谢 egrunin... 它就像一个魅力... 你是一个救世主... 谢谢 :)
    【解决方案2】:

    您根本无法在对话框中显示最小化/最大化图标。您可以通过转到对话框属性(右键单击您的对话框控件-> 属性),选择样式痛苦并取消选择“最小化框”,“最大化框”。

    【讨论】:

    • 是的,谢谢,我知道,但我需要让这些框可见......但这些操作不应该对它们起作用。
    猜你喜欢
    • 1970-01-01
    • 2015-05-02
    • 2011-02-27
    • 2019-06-18
    • 2014-08-26
    • 2019-04-06
    • 2016-10-04
    • 1970-01-01
    相关资源
    最近更新 更多