posts - 58,  comments - 75,  trackbacks - 0
WTL中的窗口消息的映射和自定义窗口消息映射

窗口消息的映射是通过宏MESSAGE_HANDLER完成的。
MESSAGE_HANDLER( 消息ID,消息处理函数 )。
自定义的消息也是通过这个宏来映射的

添加窗口消息函数后的对话框的定义如下
#include < atlapp.h >
#include "resource.h"

const int WM_MY_MESSAGE = WM_USER+1; //自定义消息ID

class CMainDialog : public CDialogImpl< CMainDialog >
{
public:
    enum { IDD = IDD_MAINDLG };

public:
    BEGIN_MSG_MAP( CMainDialog )
        MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog ) //系统的窗口消息映射,窗口初始化消息
        MESSAGE_HANDLER( WM_MY_MESSAGE, OnMyMessage ) //自定义消息的映射
        COMMAND_ID_HANDLER( IDOK, OnOk ) //控件消息的映射
        COMMAND_ID_HANDLER( IDCANCEL, OnCancel )
        COMMAND_ID_HANDLER( IDC_SENDMESSAGE_BUTTON, OnSendMyMessage ) //用来发送自定义消息的按钮消息映射
    END_MSG_MAP()

public:
    //窗口初始化消息映射函数,这是个窗口系统消息
    LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        // center the dialog on the screen
        CenterWindow();

        return TRUE;
    }

    LRESULT OnOk( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled )
    {
        EndDialog( wID );
        return 0;
    }

    LRESULT OnCancel( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled )
    {
        EndDialog( wID );
        return 0;
    }

    //发送自定义消息
    LRESULT OnSendMyMessage( WORD wNotfyCode, WORD wID, HWND hWndCtl, BOOL &bHandled )
    {
        //ATL::CWindow的SendMessage的调用
        SendMessage( WM_MY_MESSAGE );
        return 0;
    }

    //处理自定义消息
    LRESULT OnMyMessage( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
    {
        //ATL::CWindow的MessageBox的调用
        MessageBox( "This is MyMessage Handle" ); //弹出个对话框
        return 0;
    }
};
posted on 2007-05-09 11:59 walkspeed 阅读(1004) 评论(0)  编辑 收藏 引用 所属分类: C++语言

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2007年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿(4)

随笔分类(64)

随笔档案(58)

文章分类(3)

文章档案(3)

相册

收藏夹(9)

C++零碎

好友

搜索

  •  

积分与排名

  • 积分 - 157894
  • 排名 - 163

最新评论

阅读排行榜

评论排行榜