基于对话框的工程DWORD WINAPI Dlg1thread1(LPVOID lpparameter);
HANDLE hThreadl1;void CTESTONCEDlg::OnBnClickedButton1()
{
hThreadl1=CreateThread(NULL,0,Dlg1thread1,NULL,0,NULL);
}
DWORD WINAPI Dlg1thread1(LPVOID lpParameter)
{
dosomething();
return 0;
}调试发现进不去Dlg1thread1,请问问题出在哪了?
HANDLE hThreadl1;void CTESTONCEDlg::OnBnClickedButton1()
{
hThreadl1=CreateThread(NULL,0,Dlg1thread1,NULL,0,NULL);
}
DWORD WINAPI Dlg1thread1(LPVOID lpParameter)
{
dosomething();
return 0;
}调试发现进不去Dlg1thread1,请问问题出在哪了?
解决方案 »
- 【急等】DLL中使用MFC CAsyncSocket类进行UDP方式通信
- 怎么样把List中的内容保存到TXT文件里,再怎么把TXT中的内容读到List中?
- SDI中如何通过OnSize改变CPropertyPage的大小?解答即刻给分
- 如何做的
- 任务管理器中显示的奇怪名称
- 已知一个文件名的位置(比如c:\a.exe,或c:\b.txt,或c:\c.inf....?).如何得到其扩展名?
- vc的提示信息怎么不见了
- 请问,如何让一个基于dialog的程序中的一个控制响应鼠标按下的消息
- 去一家公司面试成功了,推荐给大家,不看后悔哦!!!
- COM的基本问题,还不进来。。。
- 用ADO COMMAND执行带参SQL语句
- 请帮忙消除下列警告信息,谢谢!
我试了下你的demo发现如果在第三个参数(线程函数名称)前需要加上运行状态标识可以断点进去,函数为
HANDLE hThreadHandle = NULL;
hThreadHandle = CreateThread(
NULL,
0,
(LPTHREAD_START_ROUTINE)Dlg1thread1,
NULL,
0,
NULL);如果不加的话出现以下错误error C2664: 'CreateThread' : cannot convert parameter 3 from 'void (void)' to 'unsigned long (__stdcall *)(void *)AfxBeginThread你可以GO to Definition进去看看,它包括了CreateThread,同时增加了一些变量和函数,返回的是指针,而CreateThread返回的是句柄,_beginthreadex没用过,希望对你有所帮助
把这个WINAPI去掉。
CREATETHREAD失败请查看返回值
,另外调GETLASETERROR看看
多线程创建当然是使用CreateThread最为妥当。但是你最好仔细查查CreateThread函数的用法,尤其是线程函数指针的传递。
我在我的机子上调试了下,搂主的demo是没问题的(VS2008)
有的时候打断点不一定好用(比如调试钩子程序的时候),建议搂主在回调函数中加入MessageBox试一下