(小狸猫) 2023-03-12 10:04 采纳率: 0%
浏览 22

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

img


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

  • 写回答

2条回答 默认 最新

  • MarkHan_ 2023-03-12 10:45
    关注

    该回答引用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 多文档应用程序的状态栏中添加一个按钮控件。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月12日

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画