【发布时间】:2015-05-28 08:12:13
【问题描述】:
我在 MFC 中使用 ::AfxBeginThread 时遇到问题。
我尝试创建一个线程,这是我的代码。
void CMyoControllerView::OnCbnSelchangeComboFist()
{
int nIndex = m_combo_Fist.GetCurSel();
int INDEX;
if(nIndex != CB_ERR){
CString str;
m_combo_Fist.GetLBText(nIndex, str);
if(str == "Left Click") {
INDEX = 0;
} else if(str == "Double Click") {
INDEX = 1;
} else if(str == "Right Click") {
INDEX = 2;
} else if(str == "Wheel Click") {
INDEX = 3;
} else {
INDEX = 4;
}
pThread_Fist = ::AfxBeginThread(ThreadFunc, &INDEX);
}
}
而 ThreadFunc 函数是...
UINT CMyoControllerView::ThreadFunc(LPVOID pParam)
{
int index= (int)pParam;
if(index == 0) { }
else if(index == 1) { }
...
}
::AfxBeginThread(ThreadFunc, &INDEX)); 中有问题
我想将参数传递给“INDEX”(可能的值:0~4)。
但是,当我调试这段代码时,ThreadFunc 的“索引”变量中有垃圾值。 (值应该是0~4。)
我尝试使用 reinterpret_cast 、 reinterpret_cast 等。 但我无法获得正确的价值。
我应该改变什么才能在“index”变量中获得正确的值?
(ps。我不确定,但我认为这可能是 x64 或 x86 问题。所以我搜索了谷歌并没有得到任何结果。 我使用的是 Windows 8 x64。)
【问题讨论】:
标签: c++ multithreading mfc