作用域的问题,好郁闷?
class CPowerUpdateDlg : public CDialog
{
private:
CString m_strRecvData;// (我在下面初始化为空)
}
void OnCommunication( WPARAM ch, LPARAM port );
void CPowerUpdateDlg::OnCommunication(WPARAM ch, LPARAM port)
{
m_strRecvData = "da jia ok? ";
}
BEGIN_MESSAGE_MAP(CPowerUpdateDlg, CDialog)
//{{AFX_MSG_MAP(CPowerUpdateDlg)
ON_MESSAGE(WM_COMM_RXCHAR, OnCommunication)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
这是CSerialPort类中读取字节的常用用法,每收到一个字节触发WM_COMM_RXCHAR事件,及触发OnCommunication函数。
我在这个函数里假设对成员变量m_strRecvData赋了初值,MessageBox也能正确显示出它的值为 "da jia ok? "。但是我在这个函数之外用m_strRecvData这个成员变量时它就为空值。
不只是什么原因,感觉好像作用域的问题,又不太像。好郁闷。
请教一下
谢谢!!
[解决办法]
你这个函数还没执行完,当然不会去响应新消息的。
消息驱动这个体系原理你还很混呀。