CreateThread声明如下:
WINBASEAPI
__out
HANDLE
WINAPI
CreateThread(
__in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
__in SIZE_T dwStackSize,
__in LPTHREAD_START_ROUTINE lpStartAddress,
__in_opt LPVOID lpParameter,
__in DWORD dwCreationFlags,
__out_opt LPDWORD lpThreadId
);
lpThreadAttributes是线程属性
dwStackSize是线程栈大小
lpStartAddress是线程开始地址
lpParameter是传送给线程参数
dwCreationFlags是创建线程标志比如挂起线程
lpThreadId是标识这个线程ID
这个例子如下:
#001 //
#002 //线程运行
#003 //蔡军生 2007/09/21
#004 //
#005 DWORD WINAPI ThreadProc(
#006 LPVOID lpParameter
#007 )
#008 {
#009 //输出到调试窗口
#010 OutputDebugString(_T("ThreadProc线程运行\r\n"));
#011
#012 //线程返回码
#013 0;
#014 }
#015
#016
#017
#018 //
#019 // 响应命令.
#020 // 蔡军生 2007/09/21 QQ:9073204
#021 //
#022 LRESULT CCaiWinMsg::OnCommand( nID, nEvent)
#023 {
#024 // 菜单选项命令响应:
#025 switch (nID)
#026 {
#027 IDC_CREATEBTN:
#028 //显示个按钮
#029 (!m_hBtn)
#030 {
#031 m_hBtn = CreateWindow(_T("BUTTON"),_T("按钮"),
#032 WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
#033 50,50,100,32,
#034 m_hWnd,(HMENU)IDC_BTN,m_hInstance,NULL);
#035 }
#036 ;
#037 IDC_BTN:
#038 {
#039 //传给线程简单参数
#040 nParam = 110;
#041
#042 //保存线程ID
#043 DWORD dwThreadID = 0;
#044
#045 //创建线程
#046 HANDLE hThread = CreateThread(
#047 NULL, //安全属性使用缺省
#048 0, //线程堆栈大小
#049 ThreadProc, //线程运行地址
#050 &nParam, //传给线程参数
#051 0, //创建标志
#052 &dwThreadID); //成功创建后线程标识码
#053
#054 //等待线程结束
#055 WaitForSingleObject(hThread,INFINITE);
#056
#057 //删除线程资源
#058 CloseHandle(hThread);
#059
#060 //
#061 OutputDebugString(_T("按钮按下\r\n"));
#062
#063 }
#064 ;
#065 default:
#066 CCaiWin::OnCommand(nID,nEvent);
#067 }
#068
#069 1;
#070 }
最新评论