奇怪线程问题
在一个窗口中启动一个线程监听串口,当串口收到东西时就响应自定义消息;现在遇到的问题是:如果通过手动点击按钮“Next”进入到子窗口中,该线程没有关闭;而通过自定义消息响应函数进入到子窗口中时,监听线程不工作了;但是在子窗口点击“Back”回到该窗口时,线程却依然能工作;为什么会有这样的区别呢?麻烦给讲解一下,呵呵。。。。。
在窗口的初始化函数中:
m_RS232.OpenPort(_T("COM5:"),9600 );
m_pThread=AfxBeginThread(CommProcParam, this, THREAD_PRIORITY_LOWEST,
0, CREATE_SUSPENDED, NULL);
线程函数:
UINT CommProcParam(LPVOID pParam)
{
.......
::SendMessage(pSerial->m_hWnd,WM_MYPARAM_MESSAGE,0,0);//发送消息
}
消息响应函数:
void CItemParam::OnUpDateparam()
{
do something......
OnBtnNext();//一个按钮事件的响应函数
}
void CItemParam::OnBtnNext()
{
do something......
CID id(this,L"",CID::TYPE_STRING,6,6);
if(IDCANCEL == id.DoModal()) return;//子窗口弹出
if(6 != id.m_string.GetLength()) return;
}
CID类的定义:
class CID : public CDialog
{
...............
CID(CWnd *pParent,LPCTSTR title,int inputType, float limitLow = NO_LIMIT_LOW ,float limitHigh = NO_LIMIT_HIGH); // standard constructor
}