MFC多文档怎么在状态栏添加一个按钮

img


怎么在mfc多文档的状态栏这个区域添加一个按钮。哪位兄弟能帮我看看怎么解决吗QAQ

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在 MFC 多文档应用程序中,可以通过以下步骤在状态栏中添加按钮:

  1. 打开资源编辑器,双击 IDD_MYAPP 类型的对话框。

  2. 在对话框中找到 IDC_STATUS_BAR 类型的状态栏控件,右键单击,选择“属性”(或双击该控件打开属性页)。

  3. 在属性页中找到“Panes”属性,单击其右侧的“...”按钮打开“StatusBar Panes”对话框。

  4. 在对话框中,单击“Add”按钮,添加一个新的状态栏单元格。

  5. 在“StatusBar Panes”对话框中,为新添加的状态栏单元格指定 ID 和类型,类型选择“Button”。

  6. 单击“OK”关闭“StatusBar Panes”对话框。

  7. 在 CMainFrame 类的头文件中添加一个成员变量,类型为 CStatusBarCtrl,用于与状态栏控件关联:

class CMainFrame : public CFrameWnd {
    // ...
private:
    CStatusBarCtrl m_wndStatusBar;
};


8.在 CMainFrame 类的实现文件中的 OnCreate 函数中添加代码以创建和初始化状态栏控件和按钮控件:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {
    // ...
    // 创建状态栏控件
    if (!m_wndStatusBar.Create(this)) {
        TRACE0("Failed to create status bar\n");
        return -1;      // 无法创建
    }
    m_wndStatusBar.SetIndicators(indicators, sizeof(indicators) / sizeof(UINT));

    // 获取状态栏的矩形区域
    CRect rect;
    m_wndStatusBar.GetItemRect(0, &rect);

    // 在状态栏中添加按钮控件
    m_wndButton.Create(_T("My Button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_CENTER,
        rect, &m_wndStatusBar, IDC_MY_BUTTON);
    m_wndButton.SetFont(m_wndStatusBar.GetFont());
    // ...
}



其中,indicators 是指示状态栏中各个单元格的数组,可以在 CMainFrame 类的头文件中定义:

static UINT indicators[];


在 CMainFrame 类的实现文件中,需要定义 indicators 数组并初始化它,例如:

UINT CMainFrame::indicators[] = { IDS_STATUS_LINE, ID_SEPARATOR, IDC_MY_BUTTON };


9.在 CMainFrame 类的消息映射中添加 WM_COMMAND 消息的处理函数,用于响应按钮的单击事件:

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    // ...
    ON_COMMAND(IDC_MY_BUTTON, OnMyButton)
END_MESSAGE_MAP()


10.在 CMainFrame 类中添加 OnMyButton 函数的实现,以响应按钮的单击事件:

void CMainFrame::OnMyButton() {
    // TODO: 处理按钮单击事件
}


通过以上步骤,你可以在 MFC 多文档应用程序的状态栏中添加一个按钮控件。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^