一、问题
前面已经讲过WPF与MFC联合编程,现在遇到一个问题,MFC发送了一个消息,C#如何解析该消息?
比如MFC
void SendMessageToMainWindow(EMsgType2UI nMsg, WPARAM wpara/* = NULL*/, LPARAM lpara/* = NULL*/)
{
CString temp(m_Title.c_str());
HWND mMainWindowHandle;
mMainWindowHandle = ::FindWindow(NULL, temp);
if(mMainWindowHandle)
SendMessage(mMainWindowHandle, nMsg, wpara, lpara);
}
WPF
public IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
//处理
return hwnd;
}
二、使用Marshal.PtrToStructure
var MsgData = (UIData)Marshal.PtrToStructure(wParam, typeof(UIData)); // 接收封装的消息
byte[] m_Bytes = new byte[100];//新建一个数组,长度为帧地图2D的大小
Marshal.Copy((IntPtr)lParam, RstBytes, 0, m_Bytes );//复制数据到字节数组
参考: