环境:WIN32项目,VS
目标:点击按钮(IDOK_LOG)后,进度条开始滚动,然后程序继续,之后自行退出。
问题:显示在进度条用process control 建立后,使用线程实现后无法滚动。就是显示一个空precess control
(线程实现方法应该没问题,因为单独把内容放到主程序中可以滚动,只不过是死循环)
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) (窗口回调函数)
HWND hProgress; //获得当前句GPD柄用
.....
case IDOK_LOG: //点击ok后
hProgress = GetDlgItem(hDlg, IDC_PROGRESS1);
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)PBThreadProc, hProgress, 0, 0);
.......
进度条创建后的继续程序。
break;
DWORD WINAPI PBThreadProc( LPVOID lpParameter )
{
//HWND hwndPB = GetDlgItem(hDlg, IDC_PROGRESS1);
HWND hwndPB = (HWND) lpParameter; //进度条的窗口句柄
PBRANGE range; //进度条的范围
SendMessage( hwndPB, PBM_SETRANGE, (WPARAM)0, (LPARAM)(MAKELPARAM(0,100)) );
SendMessage( hwndPB, PBM_GETRANGE, (WPARAM)TRUE, (LPARAM)&range );
while(TRUE)
{
SendMessage( hwndPB, PBM_DELTAPOS,
(WPARAM)((range.iHigh-range.iLow)/20), (LPARAM)0 );
if( SendMessage( hwndPB, PBM_GETPOS, (WPARAM)0, (LPARAM)0 ) == range.iHigh )
{
SendMessage( hwndPB, PBM_SETPOS, (WPARAM)range.iLow, (LPARAM)0 );
}
Sleep(1000);
}
}
可以参考这篇文章。
希望对你有帮助。