我做的是这么一个小程序,全局键盘钩子监控键盘的输入如果按下F10,就CreateThread一个线程
m_Thread = CreateThread(NULL,0,ThreadProc,this,0,NULL);
线程函数中处理如下:
DWORD __stdcall ThreadProc(LPVOID lpParameter) // Ï̺߳¯Êý
{
CKeyDownHookDlg *pDlg = (CKeyDownHookDlg *)lpParameter; //»ñÈ¡¶Ô»°¿òÀàµÄÖ¸Õë
while(true)
{
CString str;
pDlg->m_nCount++;
str.Format("%d",pDlg->m_nCount);
pDlg->GetDlgItem(IDC_XXXXXX)->SetWindowText(str);
pDlg->GetDlgItem(IDC_XXXXXX)->SetWindowText(str);
Sleep(150);
}
delete pDlg;
pDlg = NULL;
return 0;
}
问题就是我打开软件后,直接按F10的话,线程会疯一样的递增值,大家看到我加了一个Sleep了吧直接F10 可以在一瞬间加到3W多,郁闷死人。但是如果我打开软件后等一会,并且拖动一下软件,在启动就没事这是为什么
m_Thread = CreateThread(NULL,0,ThreadProc,this,0,NULL);
线程函数中处理如下:
DWORD __stdcall ThreadProc(LPVOID lpParameter) // Ï̺߳¯Êý
{
CKeyDownHookDlg *pDlg = (CKeyDownHookDlg *)lpParameter; //»ñÈ¡¶Ô»°¿òÀàµÄÖ¸Õë
while(true)
{
CString str;
pDlg->m_nCount++;
str.Format("%d",pDlg->m_nCount);
pDlg->GetDlgItem(IDC_XXXXXX)->SetWindowText(str);
pDlg->GetDlgItem(IDC_XXXXXX)->SetWindowText(str);
Sleep(150);
}
delete pDlg;
pDlg = NULL;
return 0;
}
问题就是我打开软件后,直接按F10的话,线程会疯一样的递增值,大家看到我加了一个Sleep了吧直接F10 可以在一瞬间加到3W多,郁闷死人。但是如果我打开软件后等一会,并且拖动一下软件,在启动就没事这是为什么
请问 _beginthreadex创建的线程如何中止