使用MFC中的“发送消息”最小化和还原窗口

时间:2016-05-10 14:16:54

标签: c++ visual-studio mfc

我正在学习MFC,我正在尝试学习发送消息。我一直在寻找几天,但我们无法弄清楚我到底需要什么。

我有两个对话框,其中一个有一个按钮,可以最小化或恢复另一个窗口。我已经能够弄清楚如何使用指针来完成这个,但我想将它转换为SendMessage函数。

这是我使用指针的当前代码...

Window2.cpp

void CWindow2::OnBnClickedButton1()
{
    // TODO: Add your control notification handler code here
    if (m_windowOne != NULL) {
        if (buttonstate == 0) {
            m_windowOne->ShowWindow(SW_MINIMIZE);
            buttonstate = 1;
        }
        else {
            m_windowOne->ShowWindow(SW_RESTORE);
            buttonstate = 0;
        }
    }
}

如果有人可以通过使用消息而不是指针来解释如何获得类似的功能,那将非常感激。

1 个答案:

答案 0 :(得分:0)

这是一个稍微不同的背景,但它传达了原则:

void CSomeDialog::OnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0x0000FFF0) == SC_MINIMIZE)
    {
        // Minimizing, post to main dialogue also.
        AfxGetMainWnd()->ShowWindow(SW_MINIMIZE);
    }
    else if ((nID & 0x0000FFF0) == SC_RESTORE && IsIconic())
    {
        // Restoring, post to main dialogue also.
        AfxGetMainWnd()->ShowWindow(SW_RESTORE);
    }

    CDialogEx::OnSysCommand(nID, lParam);
}

在上面的场景中,每当对话框CSomeDialog被最小化或恢复时,它也会将其提供给主应用程序窗口。

如果您将相关对话框作为班级中的变量,那么ShowWindow(...)就足够了。