向调用DLL的窗口发送消息问题

sxqinge 2012-06-16 01:09:20
最近在写个DLL文件,外部通过调用DLL的一个接口函数抄读数据,内部实现自动抄读解析,解析成功后将发送消息到接受窗口中。
DLL中定义如下:
#define WM_GETMETERPARAM (WM_USER+100)
extern "C" __declspec(dllexport) std::string __stdcall GetSomeDatas(HWND hWnd, const int Port);

std::string __stdcall GetSomeDatas(HWND hWnd, const int Port)
{
m_hWnd = hWnd;
...
}
hWnd为传递发送命令窗体的句柄,得到相关数据后,发送消息:
SendMessage(m_hWnd, WM_GETMETERPARAM, (WPARAM)ID, (LPARAM)Str.c_str());//ID,Str存放目标内容,调试发现返回值为0.

在调用窗体中写上接受消息,
.h中:
#define WM_GETMETERPARAM (WM_USER+100)

class TTest : public TForm
{
...
public:
void __fastcall OnGetMessage( TMessage &Msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_GETMETERPARAM, TMessage, OnGetMessage);
END_MESSAGE_MAP(TfrmBase);
};


.cpp中实现
void __fastcall TTest::OnGetMessage(TMessage &Msg)
{
...//调试发现接受到数据时,没有走到这个函数中来
}
///////////////////////////////////////
请教下各位大侠,怎么样才能再OnGetMessage中得到响应呢?
...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxqinge 2012-06-20
  • 打赏
  • 举报
回复
我在一个类中使用了SendMessage函数,想向主窗口发送消息:
SendMessage(Application->Handle, WM_YOURMESSAGE, (WPARAM)0,(LPARAM)0);
然后在主窗口中定义接受消息函数,调试时在接受函数中设置断点,但一直没有进入,说明消息发送不成功。然后我将SendMessage的句柄重新定义了下:
hWnd = FindWindow(your_classname, your_windowname);//
SendMessage(hWnd, WM_YOURMESSAGE,0,0);
运行时,可以到达接受函数的断点处,说明消息发送成功。
在这里我有点不明白,按理来说,主窗口的句柄可以用Application来获取的,为什么我这里就没有获取成功呢?请高手予以指点,谢谢。
sxqinge 2012-06-18
  • 打赏
  • 举报
回复
期待高手回答
sololie 2012-06-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
其实可以比较下,传入DLL的句柄和你通过FindWindow获得的窗口的句柄。
[/Quote]
DLL的句柄和DLL中窗口的句柄是不一样的吧,我觉得就应该findwindow取窗口句柄
科多兽 2012-06-16
  • 打赏
  • 举报
回复
其实可以比较下,传入DLL的句柄和你通过FindWindow获得的窗口的句柄。
sxqinge 2012-06-16
  • 打赏
  • 举报
回复
我如果在DLL中直接使用FindWindow函数来寻找句柄的话,倒是可以设置成功。
难道我直接传句柄的指针下去不行么?求解释。。。

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧