1
我在Win32中創建一個進度條,當它在Release配置中構建應用程序但在Debug配置中工作時它不會更新。進度條被創建如下:在Win32中不更新的進度條
progBar= CreateWindowEx(0,PROGRESS_CLASS,NULL,WS_CHILD | WS_VISIBLE|PBS_SMOOTH,rc.right/2-130,rc.bottom/2, 260, 17,hWnd, NULL, hInst, NULL);
//Sets the range of progress bar
SendMessage(progBar, PBM_SETRANGE, 0, MAKELPARAM(0,10)); //0->min value; 10->max value
SetTimer(hWnd, TIMER_1, 1000, TimerProc); //set the timer
和我的TimerProc是:
void CALLBACK TimerProc(HWND hWnd, UINT msg, UINT idEvent, DWORD dwTime)
{
switch(msg)
{
case WM_TIMER:
{
SendMessage(progBar, PBM_SETPOS,stepValue,0); //stepValue
InvalidateRect(progBar,NULL,TRUE);
if(stepValue>9)
{
stepValue=0;
}
else
{
stepValue++;
}
}
}
return;
}
我使用Visual Studio 2010.Is可能我錯過了一些圖書館,因爲它工作在調試配置。我選擇的運行時庫是多線程(/ MT)
嘗試調試發佈配置。從這裏的代碼我只能考慮未初始化的stepValue變量,但調試器可以告訴你更多。 –
刪除InvalidateRect()調用並確保初始化stepValue。使用調試器。只是不要這樣做,這已經被PBM_SETMARQUEE消息所支持。 –
'WM_TIMER'消息優先級低。它們僅在消息隊列爲空時生成。您是否驗證了在發佈版本中創建了「WM_TIMER」消息? – IInspectable