在 DIALOG里定义工具栏消息

本文是作者初学MFC时记录的关于在DIALOG中定义工具栏消息的过程,包括了解决消息困扰、初始化、在头文件和源文件中添加消息处理函数的步骤,以及在Resouce.h中定义消息ID。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 DIALOG里定义工具栏消息


  • 小弟也只是初学MFC, 参考别人源码看不懂所记下
  • 记录一下自己被困扰许久的问题
  • 这也是自己第一篇博客,写得不好请多包含

0x00 被困扰的消息

    在下载了一个开源MFC代码,发现工具栏消息自己定义的,找了老半天没找着是怎么定义,过程心酸。。此处不多详细说,下面详细介绍如何定义工具栏消息。

0x01 解决消息

    在 DIALOG类里面创建一个 CToolBar 成员变量,我将他命名为 :   CToolBar m_Toolbar; 

    有了这个成员变量之后就可以创建一个创建工具栏了。
    找到 OnInitDialog() 初始化函数, 下面代码为 OnInitDialog() 函数实现
CDialogEx::OnInitDialog();

    // 将“关于...”菜单项添加到系统菜单中。

    // IDM_ABOUTBOX 必须在系统命令范围内。
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        BOOL bNameValid;
        CString strAboutMenu;
        bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
        ASSERT(bNameValid);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE);         // 设置大图标
    SetIcon(m_hIcon, FALSE);        // 设置小图标

    //定义消息
    UINT Msg = 103;

    m_ToolBar.Create(this);
    m_ToolBar.SetButtons(&Msg, 1);
    m_ToolBar.SetButtonText(0, "测试");

0x02 初始化完成以后开始定义消息

  1. 找到 Resouce.h 这个头文件
  2. 把刚才定义消息的 103 做个宏定义;
  3. 把这段代码添加进去 #define IDB_TEST 103
  4. 保存关闭头文件

0x03 在 DIALOG 头文件中添加消息处理函数

protected:
    HICON m_hIcon;

    // 生成的消息映射函数
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    afx_msg void OnBUTTONTest();    //这个就是我添加的消息处理函数

    DECLARE_MESSAGE_MAP()

0x04 在 DIALOG 源文件中添加代码

BEGIN_MESSAGE_MAP(CtestDlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_COMMAND(IDB_TEST , OnBUTTONTest) //在这里添加关联消息处理函数
END_MESSAGE_MAP()



void CtestDlg::OnBUTTONTest()
{
    //在这里添加自己需要处理的消息代码 
}

0x05至此添加工具栏消息映射完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值