mfc消息映射防真!

最近在學習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   )

{

....

}

....

通過函數指針來實現類中的成員函數!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章