請問在ActiveX控件中,定義了一個線程,向控件發送消息,控件接收到消息觸發事件,就象MSComm的OnComm事件
請問在ActiveX控件中,定義了一個線程,向控件發送消息,控件接收到消息觸發事件
就象MSComm的OnComm事件
我這樣寫的:
//定義消息
#define WM_UPDATEDATA WM_USER+1000
//定義一個結構體,用來跟線程傳送數據
struct ThreadData
{
HWND hwnd;
int iValue;
BOOL bTerminateThread;
ThreadData() // 設定預設值
{
bTerminateThread=FALSE;
}
}* m_pData;
//線程函數如下
UINT WorkThreadProc(LPVOID lParam)
{
ThreadData *pData=(ThreadData*)lParam;
if(pData==NULL)return -1;
int i=0;
while(!pData->bTerminateThread)
{
Sleep(1000);
i++;
pData->iValue=i;
//************問題可能在這個***************************
::SendMessage(pData->hwnd,WM_UPDATEDATA,0,0);
//*************************************************8
}
return 0;
}
//控件響應消息
BEGIN_MESSAGE_MAP(CSampleCtrl, COleControl)
ON_MESSAGE(WM_UPDATEDATA, HandMsg)
END_MESSAGE_MAP()
//消息處理函數
UINT CSampleCtrl::HandMsg(WPARAM,LPARAM)
{
MessageBox("ok");
FireOnRun(m_pData->iValue);//觸發事件
return 1;
}
//控件有兩個方法:打開,關閉
//打開
void CSampleCtrl::StartRun()
{
// TODO: Add your dispatch handler code here
m_pData=new ThreadData;
//*****問題可能在這裡**************
m_pData->hwnd=this->m_hWnd;
//****************************
AfxBeginThread(WorkThreadProc,(LPVOID)m_pData);
}
//關閉
void CSampleCtrl::StopRun()
{
// TODO: Add your dispatch handler code here
m_pData->bTerminateThread=TRUE;
}
問題是消息處理函數沒動作
各位大俠幫幫看看喔
不勝感激!!