请高手看一下程序,关于线程
#include <windows.h>
#include <windowsx.h>
#include <tchar.h>
#include <process.h>
#include "Resource.H"
//////////////////////////////////////////////////////////////
UINT WINAPI Thread (LPVOID hwnd)
{
for(int q =1;q < 31;q++)
{
Sleep(100);
SetDlgItemInt((HWND)hwnd, IDC_ANSWER, q, FALSE);//★★★1
}
return(0);
}
/////////////////////////////////////////////////////////////
BOOL CALLBACK Dlg_Proc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
UINT ids;
HANDLE hThread ;
switch (uMsg)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
hThread = (HANDLE)_beginthreadex( NULL,0,Thread,(LPVOID)hwnd, 0, &ids);
WaitForSingleObject(hThread, INFINITE);//★★★2
for(int q =31;q < 40;q++)
{
Sleep(100);
SetDlgItemInt(hwnd,IDC_ANSWER, q, FALSE);
}
break;
case IDCANCEL:
EndDialog(hwnd, LOWORD(wParam));
break;
}
}
return(FALSE);
}
//////////////////////////////////////////////////////////////
int WINAPI _tWinMain (HINSTANCE hinstExe, HINSTANCE hinstPrev,
LPTSTR pszCmdLine, int nCmdShow) {
DialogBox(hinstExe, MAKEINTRESOURCE(IDD_SPRMRKT), NULL, Dlg_Proc);
return(0);
}
//////////////////////////////////////////////////////////////
IDC_ANSWER 为 static text
//★★★1 和 //★★★2 为何不能同时出现,只能留其一?
问题点数:20、回复次数:2Top
1 楼ydaye(不用记,不用记,根本不用记!)回复于 2003-02-02 03:39:04 得分 15
SetDlgItemInt这个函数要等句柄为hwnd的窗体执行完后才能返回,而那个窗体又又因在WaitForSingleObject等调用SetDlgItemInt的线程时挂起,这等来等去只怕是没个尽头了。Top
2 楼Jacky_Wu(悖)回复于 2003-02-05 02:14:01 得分 5
case IDOK: 无法执行完Top




