在Win API编程中,是作为消息函数的参数传递的,在mfc中,消息参数被封装起来了,如何得到?谢谢!

解决方案 »

  1.   

    对于系统消息,msdn中对于wParam和lParam都有详细的介绍
      

  2.   

    BOOL Cdlg2Dlg::PreTranslateMessage(MSG* pMsg)
    {
    // TODO: Add your specialized code here and/or call the base class return CDialog::PreTranslateMessage(pMsg);
    }查msdn的MSG结构,直接有这两个变量
      

  3.   

    比如我有一个消息处理函数OnDeal(),这个函数里如何得到wparam,lparam参数呢?
      

  4.   

    但是对于一个普通的函数,我怎么得到pMsg呢?
      

  5.   

    先在PreTranslateMessage里处理一下,然后return CDialog::PreTranslateMessage(pMsg);
    你不会每个消息都需要截获消息吧?
      

  6.   

    在PreTranslateMessage里面进行判断,如果是你要拦截的消息,则对你定义的那个函数处理.否则不进行处理.
      

  7.   

    声明消息ID
    #define MY_MSG WM_USER+1000;
    定义消息函数
    void ExecuteMyMsg(WPARAM wParam,LPARAM lParam);定义消息映射
    ON_MESSAGE(MY_MSG, ExecuteMyMsg)一个结构,用于传递
    typedef struct tagMyStruct
    {
      ......
    }_tagMyStruct;
    实现消息函数
    void YourClass::ExecuteMyMsg(WPARAM wParam,LPARAM lParam)
    {
    MyStruct *myStruct = (MyStruct*)wParam;
            your other operation!!!!!
    }
    其它函数中使用消息。
    PostMessage or SendMessage
    MyStruct myStruct ={0};
    然后初始化结构。
    SendMessage(HWND, MY_MSG, (wParam)&myStruct,0 );