希望能在exe中响应dll传会的消息。现在已经在exe中该消息的声明和处理已经都做好了。我按照网上查的资料,修改dll时,出现了两个问题,希望大家能帮着解决一下:
1.我希望在exe窗口上点击一个按钮,调出dll的窗口,不过如何将exe的窗口句柄传给dll?dll中要有一个什么样的变量接收这个hwnd?
2.我的dll按如下操作总是报错:
   (1)       在stdafx.h头文件中添加消息定义:
               #define WM_MSG WM_USER + 102 
         (2)       添加启动消息的输出函数:(我把这个东西加到了CMessageDLLApp这个类里面,不知道对不对)
        CMessageDLLApp theApp;
               extern "C" _declspec(dllexport) void StartSendMessage(HWND hwnd)
             {
                 theApp.SendMessage(hwnd);
             }     
            其中hwnd是接收消息的窗口句柄。   (3)      添加启动消息的实现函数:(加到了CMessageDLL里面)              在CMessageDLL头文件中添加函数声明:
              void SendMessage(HWND hwnd); 
            在CMessageDLL文件中添加函数实现
              void CMessageDLLApp::SendMessage(HWND hwnd)
            {
                   ::PostMessage(hwnd,WM_MSG,0,1);
            }
希望高手们能帮着调一调,谢谢大家

解决方案 »

  1.   

    感觉楼主在做无用功,::PostMessage(hwnd,WM_MSG,0,1); 你放到哪里都可以啊。
      

  2.   

    1、导出函数定义一个HWND类型的参数即可。
    2、报什么错?
      

  3.   

    App中代码基本可以,但是那个PostMessage没什么意义,那里都可以用,至于DLL中你随便导出一个函数让App设置父窗口的句柄,在DLL中直接使用SendMessage函数就好了
      

  4.   

    Dll导出的函数中还是支持HWND参数的啊。
    没看出你的代码这样写的意义。还有,出什么错了?有错误提示吗?在调试中看一下调用栈呢? 
      

  5.   

    dll里就一个HWND 类型变量接收传来得 窗口啊,然后对着这个窗口 发消息 ,没有任何问题有问题要自己多做测试,