希望窗体的PreTranslateMessage处理过程能在dll中完成,应该用哪个hook ?
WH_CALLWNDPROC? WH_CALLWNDPROCRET? WH_GETMESSAGE? 谁可以给出简单的示例代码?

解决方案 »

  1.   

    导出一个函数. 由主程序把msg给dll
      

  2.   

    有代码,不过在公司里不能贴代码。大体上就是从dll中导出一个函数,而在主程序中调用这个函数吧PreTranslateMessage的参数传过去
      

  3.   

    从DLL导出一个函数,在主程序的PreTranslateMessage把参数传过去处理。
      

  4.   

    1、定义DLL导出消息处理函数原型
    typedef LPWSTR (__stdcall* DllMsgProcess)(MSG* pMsg);2、定义消息处理函数指针,dll句柄
    DllMsgProcess pDllMsgProcess;
    HINSTANCE hinstLib;3、加载dll得到其中消息处理函数指针hinstLib = LoadLibrary("myDll.dll");
    if (hinstLib != NULL)
    {
    pDllMsgProcess = (DllMsgProcess)GetProcAddress(hinstLib, "DllMsgProcess");
    }4、在窗口处理
    BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
    {
    // TODO: 在此添加专用代码和/或调用基类
    pDllMsgProcess(pMsg)
    return CFrameWnd::PreTranslateMessage(pMsg);
    }5、退出卸载dll
    FreeLibrary(hinstLib);