我有两个类,一个CDialog1,一个CMyThread类,在线程类里有一个函数Worker(LPVOID pParam)
在我的CDialog1里有两个控件,我给他门设了两个变量m_board1,m_board2,我在开始线程的时候这样做的
CMyThread *pThread=new CMyThread;
pThread->CreateThread(&m_board1);
pThread->Start();
pThread->CreateThread(&m_board1);
pThread->Start();
这时,Worker函数就分别收到了m_board1和m_board2的地址,传给了pParam,我想在线程里做一个switch 如果pParam收的地址等于m_board1的地址就执行一个命令,如果等于m_board2 的地址就执行另外一个命令
现在问题出来了,怎么样能让pParam 和 m_board1 和 m_board2 分别做地址比较??
在我的CDialog1里有两个控件,我给他门设了两个变量m_board1,m_board2,我在开始线程的时候这样做的
CMyThread *pThread=new CMyThread;
pThread->CreateThread(&m_board1);
pThread->Start();
pThread->CreateThread(&m_board1);
pThread->Start();
这时,Worker函数就分别收到了m_board1和m_board2的地址,传给了pParam,我想在线程里做一个switch 如果pParam收的地址等于m_board1的地址就执行一个命令,如果等于m_board2 的地址就执行另外一个命令
现在问题出来了,怎么样能让pParam 和 m_board1 和 m_board2 分别做地址比较??
m_board1,m_board2变量类型是什么?
通过通过控件的ID号判断! 下面假设m_board1的ID号为ID_BOARD1,而m_board2的ID号为ID_BOARD2! 则程序如下:CWnd* pWnd = (CWnd*)pParam;
ASSERT(pWnd);switch(pWnd->GetDlgCtrlID())
{
case ID_BOARD1 :
//进行相关的处理
break;
case ID_BORAD2:
//进行相关的饿处理
break;
defualt:
break;
}
我忘记你的那个电子表控件的类名了,我就叫他CLEDShow吧.
UINT Worker(LPVOID lparam)
{
CLEDShow * m_pLEDshow = (CLEDShow *)lparam;
//你不是传入两个指针了吗?一个是m_board1和m_board2;
//你想判断是哪个对不对?那就判断这个窗口的ID好了,就是他的标式了我假设分别是 ID_BOARD1 和 ID_BOARD2吧。
这样就作
LONG id = ::GetWindowLong(m_pLEDshow->GetSafeHwnd(),GWL_ID);
switch(id)
{
case ID_BOARD1:
DO something
break;
case ID_BOARD2:
....
break;
}
}
我想差不多吧,你试试看吧。