.NET客户端-MFC常规DLL和用户定义的消息
更新:这是一个.NET客户端调用常规DLL。我还得到了另一个扩展DLL,它导出了一些类,并在常规DLL中使用 我有一个第三方DLL,它将WindowHandle和用户定义的消息作为参数,并开始向传递的窗口发送消息,但我没有看到任何消息到达我的窗口。以下是API调用格式:.NET客户端-MFC常规DLL和用户定义的消息,.net,dll,mfc,messaging,.net,Dll,Mfc,Messaging,更新:这是一个.NET客户端调用常规DLL。我还得到了另一个扩展DLL,它导出了一些类,并在常规DLL中使用 我有一个第三方DLL,它将WindowHandle和用户定义的消息作为参数,并开始向传递的窗口发送消息,但我没有看到任何消息到达我的窗口。以下是API调用格式: StartMessaging(<WindowHandle>,WM_MESSAGE_API); 我的主类,其中StartMessage被称为: 在构造函数中,我实例化了CFrameWnd对象: myDerivedWn
StartMessaging(<WindowHandle>,WM_MESSAGE_API);
我的主类,其中StartMessage被称为:
在构造函数中,我实例化了CFrameWnd对象:
myDerivedWnd=新的CMydrivedWnd(本)
然后称为InitiateMessage:
void CMain::InitiateMessaging()
{
TCHAR szBuf[80];
::GetWindowText(myDerivedWnd->m_hWnd,szBuf,80);
OutputDebugString((LPSTR)(LPCTSTR)szBuf); //This displays MYWINDOW
StartMessaging(myDerivedWnd->m_hWnd,WM_MESSAGE_API);
}
我的GetWindowText函数返回正确的窗口名,但我无法在此类中捕获WM_MESSAGE_API MESSAGE。
我也尝试过使用扩展DLL,但结果相同。我发现了问题,但还没有找到答案。这是线程在C端导致事件不显示。如果调用C++互操作在主线程上,事件工作,但我需要调用是在一个单独的线程。我计划发布另一个问题以找到答案。我有一个基于MFC对话框的示例应用程序,它使用相同的API。我忘了提到这个常规DLL是从.NET客户端调用的。
void CMain::InitiateMessaging()
{
TCHAR szBuf[80];
::GetWindowText(myDerivedWnd->m_hWnd,szBuf,80);
OutputDebugString((LPSTR)(LPCTSTR)szBuf); //This displays MYWINDOW
StartMessaging(myDerivedWnd->m_hWnd,WM_MESSAGE_API);
}