mfc消息映射防真!

23 篇文章 0 订阅
12 篇文章 0 订阅

最近在学习MFC底层,通过看书受到启发,决定抛开书自己来独立写一下主要核心代码!

先定义一个MYMSGSTRUCT消息结构体和一个MYMSG宏. 

 

struct  mymsgstruct {

UNIT mymeesage;

LONG  (
*ptr)( HWND hwnd,      UINT uMsg,      WPARAM wParam,   LPARAM lParam  );

}

 

 

MYMSG(x)  (  sizeof (x)  /   sizeof (x[ 0 ]) )

 

......

mymsgstruct  mymsg[]={WM_COMMOD,OnCommod,WM_CHAR,OnChar,....}

mymsgstruct commodmsg[]={IDM_ABOUT,OnAbout,IDM_SAVEAS,OnSaveas....}

....

LRESULT CALLBACK WindowProc( HWND hwnd,   UINT uMsg,    WPARAM wParam LPARAM lParam   )

{

           for(int i=0;i<MYMSG(mymsg);i++)

                {

                             if(uMsg==mymsg[i].mymessage)

                              return mymsg[i].ptr( HWND hwnd,   UINT uMsg,    WPARAM wParam LPARAM lParam   );

                              return DefWindowProc( HWND hwnd,   UINT uMsg,    WPARAM wParam,  LPARAM lParam   );

                }

}

LONG  OnCommod( HWND hwnd,   UINT uMsg,    WPARAM wParam LPARAM lParam   )

{

           for(int i=0;i<MYMSG(commodmsg);i++)

                {

                             if((LOWORD)wParam==commodmsg[i].mymessage)

                              return commodmsg[i].ptr( HWND hwnd,   UINT uMsg,    WPARAM wParam LPARAM lParam   );

                              return DefWindowProc( HWND hwnd,   UINT uMsg,    WPARAM wParam,  LPARAM lParam   );

                }

}

LONG  OnChar( HWND hwnd,   UINT uMsg,    WPARAM wParam LPARAM lParam   )

{

....

}

....

通过函数指针来实现类中的成员函数!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值