在串口通信中,MainFrame类中手到串口数据,想把收到的字符串发送给需要的窗口,
在MainFrm.h中添加#include "MProperty.h"
CMProperty mpro; 在MainFrm.cpp中
MainFrm.cpp
HWND hWnd=mpro.m_hWnd;
stradd=&str;
::PostMessage(hWnd,WM_SEND,0,(LPARAM)stradd);
消息发送不成功,单步执行时,发现hWnd=0x00000000,不知道什么原因啊,为什么HWND hWnd=mpro.m_hWnd得不到窗口的句柄呢?
在MainFrm.h中添加#include "MProperty.h"
CMProperty mpro; 在MainFrm.cpp中
MainFrm.cpp
HWND hWnd=mpro.m_hWnd;
stradd=&str;
::PostMessage(hWnd,WM_SEND,0,(LPARAM)stradd);
消息发送不成功,单步执行时,发现hWnd=0x00000000,不知道什么原因啊,为什么HWND hWnd=mpro.m_hWnd得不到窗口的句柄呢?
::PostMessage(hWnd,WM_SEND,0,(LPARAM)stradd); 你的str是一个局部变量吧?不能这样post过去的
如果确实要这样post的话,如果你的字符串是一个CString的话
这样::PostMessage(hWnd,WM_SEND,0,str.AllocSysString()); 在收到这个消息的时候记得要用SysFreeString来释放这个字符串哦
::PostMessage(hWnd,WM_SEND,0,(LPARAM)stradd);
这里的str我是在头文件里定义的,不是局部变量吧 我POST的是这个字符串的地址stradd,这也是.h文件里头定义的
这里是找不到接受窗口的句柄hWnd=0x00000000,
至于POST还是SEND,性质不是一样吗?
只是返回快慢问题
还有"至于POST还是SEND,性质不是一样吗?",纠正下,性质不一样
CMProperty mpro;
我说的很清楚了
LONG CMainFrame::OnComm(WPARAM ch,LPARAM port) //接收串口数据
{
CString st;
st.Format("%02X",ch);
if (st!="FF")
{
str+=st;
}
else
{
str+=st;
MessageBox(str);
// hWnd=(HWND)GetActiveWindow();
HWND hWnd=mpro.m_hWnd;
stradd=&str;
::PostMessage(hWnd,WM_SEND,0,(LPARAM)stradd); str="";
}
CMProperty mpro; //只是定义了一个窗口类.
你还要创建它,才有窗口.//看看CMProperty类有没有Create()这个方法.
LONG CMainFrame::OnComm(WPARAM ch,LPARAM port) //接收串口数据
{
CString st;
st.Format("%02X",ch);
if (st!="FF")
{
str+=st;
}
else
{
str+=st;
MessageBox(str);
// hWnd=(HWND)GetActiveWindow();
HWND hWnd=mpro.m_hWnd; // 这里断点看一下mpro相关的值就知道了
stradd=&str;
::PostMessage(hWnd,WM_SEND,0,(LPARAM)stradd); str="";
}