主窗口类有一函数负责串口数据分拣工作
CXXXotherDlg m_otherdlg;//模态对话框
void CXXXMainDlg::ReceiveComData(int nSendCode, const CString & sReadstr)
{
int m_nNum = 1;
switch(nSendCode)
{
case 0:
otherdlg.MacBtnEnable(m_nNum);//模态对话框函数
break;
...
}
---------------------------------
模态对话框内函数
void CXXXotherDlg::BtnEnable(int nNum);
{
switch(nNum){
case 1:
AfxMessageBox("Test")
m_BtnCmdDown.EnableWindow(TRUE);//某按钮成员变量
break;
...
}程序流程
1弹出模态对话框
2向串口发出指令
3串口返回指令
4进入此函数void CXXXMainDlg::ReceiveComData(int nSendCode, const CString & sReadstr)
5调用模态对话框函数otherdlg.MacBtnEnable(m_nNum)
6模态对话框按钮状态发生改变问题就是,在模态对话框内调用此函数BtnEnable(int nNum),m_BtnCmdDown按钮很好的被控制.
但是通过主窗口ReceiveComData()函数控制,BTNENABLE()函数的确也运行了[AfxMessageBox弹出了]
,但是按钮状态未发生变化在第6步。不知道何解
CXXXotherDlg m_otherdlg;//模态对话框
void CXXXMainDlg::ReceiveComData(int nSendCode, const CString & sReadstr)
{
int m_nNum = 1;
switch(nSendCode)
{
case 0:
otherdlg.MacBtnEnable(m_nNum);//模态对话框函数
break;
...
}
---------------------------------
模态对话框内函数
void CXXXotherDlg::BtnEnable(int nNum);
{
switch(nNum){
case 1:
AfxMessageBox("Test")
m_BtnCmdDown.EnableWindow(TRUE);//某按钮成员变量
break;
...
}程序流程
1弹出模态对话框
2向串口发出指令
3串口返回指令
4进入此函数void CXXXMainDlg::ReceiveComData(int nSendCode, const CString & sReadstr)
5调用模态对话框函数otherdlg.MacBtnEnable(m_nNum)
6模态对话框按钮状态发生改变问题就是,在模态对话框内调用此函数BtnEnable(int nNum),m_BtnCmdDown按钮很好的被控制.
但是通过主窗口ReceiveComData()函数控制,BTNENABLE()函数的确也运行了[AfxMessageBox弹出了]
,但是按钮状态未发生变化在第6步。不知道何解
otherdlg.BtnEnable(m_nNum);//模态对话框函数
使用了多线程?
otherdlg.MacBtnEnable(m_nNum);这句,COPY的时候漏掉了串口收到数据后会把数据包交给ReceiveComData() ,串口收数据的确是另挂的一条线程只要有数据到就触发,跟这个有影响?m_otherdlg.MacBtnEnable(m_nNum);// 这句就是在此函数ReceiveComData() 中的
然后串口数据返回时在住对话框内的函数负责处理,根据处理结果就调用模态弹出窗口的一个函数,这个函数负责解锁这个按钮。
把代码更换成直接取得按钮ID就会出现错误,找到病根了,谢谢,结帐了