我正在尝试以下方式更改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应用程序。

最佳答案

可以通过调用“AA>”禁用单个控件的主题。对于进度条,请禁用以下主题:

SetWindowTheme(hwndPB, "", "");

禁用主题后,就可以控制颜色。

07-25 20:21