1

我在 Win32 中创建了一个进度条,当我在 Release 配置中构建应用程序时它不会更新,但在 Debug 配置中工作。进度条创建如下:

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。我是否可能缺少一些库,因为它在调试配置中工作。我选择的运行时库是多线程 (/MT)

4

1 回答 1

1

根据 Hans 的说法,我尝试了 Marquee 风格的进度条,它起作用了。代码更改如下:

        progBar= CreateWindowEx(0,PROGRESS_CLASS,NULL,WS_CHILD | WS_VISIBLE|PBS_MARQUEE,rc.right/2-130,rc.bottom/2, 260, 17,hWnd, NULL, hInst, NULL);

        SendMessage(progBar, PBM_SETMARQUEE,TRUE,50); 

我删除了 SetRange 语句。根据此链接

http://social.msdn.microsoft.com/Forums/vstudio/en-US/407cf8d0-02cc-4276-adb1-3fc619ce4f3a/progress-bar-with-marquee-style

我不得不添加

#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") 

否则 Marquee 进度条将不起作用。有人可以解释一下吗?但这也适用于发布版本。

于 2013-08-29T04:55:53.933 回答