2013-05-13 60 views
2

我試圖改變背景和酒吧的顏色以下面的方式贏得32進度條:變色贏得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應用程序。

+0

禁用視覺樣式是用戶的選擇,所以你不應該那樣做。 ---我*猜*如果它只是一個簡單的繪圖,應該很容易自己繪製進度條。 – peterchen 2013-05-13 11:19:43

+0

@peterchen:謝謝你。有沒有一種方法可以自定義進度條,而無需使用win 32命令重繪/繪製進度條。 – grv 2013-05-13 11:26:15

+0

@peterchen你自相矛盾。一方面,您建議用戶控制此控件的外觀。然後,你建議grv描繪控件,並將控制權從用戶手中移除。 – 2013-05-13 11:49:25

回答

4

您可以通過調用SetWindowTheme來禁用單個控件的主題。爲了您的進度條,禁止類似這樣的主題化:

SetWindowTheme(hwndPB, "", ""); 

一旦你已經禁用了主題化,你就可以控制顏色。

+0

它看起來像我可能會錯過這裏的東西,並得到以下編譯錯誤:錯誤C3861:'SetWindowTheme':標識符沒有找到..你可以請扔一些光。 – grv 2013-05-13 12:01:23

+0

閱讀我提供的MSDN文檔鏈接。您需要包含'Uxtheme.h'並將'UxTheme.lib'傳遞給鏈接器。這些MSDN文檔主題都遵循相同的模板。查看要求的主題底部。請注意,您需要定位到最低版本的XP才能使用主題API。 – 2013-05-13 12:01:59

+0

@grv你是否希望超過這個?我認爲它完全符合你的要求。 – 2013-05-13 14:09:52