当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

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) [Page]
                              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   )
{
....
}
....
通过函数指针来实现类中的成员函数!
相关内容
赞助商链接