2

我正在尝试通过以下方式更改 win 32 进度条中的背景和栏的颜色:

HWND hwndPB =CreateWindowEx(0, PROGRESS_CLASS, NULL,
    WS_CHILD | WS_VISIBLE |PBS_SMOOTHREVERSE | PBS_MARQUEE ,
    20, 50, 275, 20,
    hwndDlg, NULL,NULL , NULL);

SetWindowLongPtr(hwndDlg,GWLP_USERDATA,reinterpret_cast<LONG_PTR>(hwndPB));
SendMessage(hwndPB,(UINT)PBM_SETBKCOLOR,0,RGB(200,200,200));
SendMessage(hwndPB,(UINT) PBM_SETBARCOLOR,0,(LPARAM)RGB(100,100,100));
SendMessage(hwndPB,(UINT) PBM_SETMARQUEE,(WPARAM) TRUE,(LPARAM)50 );

我猜这不起作用,因为启用了视觉主题。任何人都可以建议我完成它或禁用视觉样式的方法。我正在使用 VS 2008。此外,它是一个非 mfc 应用程序。

4

1 回答 1

4

您可以通过调用禁用单个控件的主题SetWindowTheme。对于您的进度条,禁用这样的主题:

SetWindowTheme(hwndPB, "", "");

禁用主题后,您将能够控制颜色。

于 2013-05-13T11:42:28.547 回答