在 DIALOG里定义工具栏消息

来源:互联网 发布:知乎的功能 编辑:程序博客网 时间:2024/05/17 18:47

在 DIALOG里定义工具栏消息


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

  • 在 DIALOG里定义工具栏消息
    • 0x00 被困扰的消息
    • 0x01 解决消息
    • 0x02 初始化完成以后开始定义消息
    • 0x03 在 DIALOG 头文件中添加消息处理函数
    • 0x04 在 DIALOG 源文件中添加代码
    • 0x05至此添加工具栏消息映射完毕

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至此添加工具栏消息映射完毕

0 0