2008-10-20 93 views
10

我試圖調用OpenThemeData(請參閱msdn OpenThemeData)函數,但我無法確定pszClassList參數傳入的可接受類名稱。OpenThemeData函數可能的類是什麼?

HTHEME OpenThemeData(  
    HWND hwnd, 
    LPCWSTR pszClassList 
); 

有人能告訴我什麼是我可以傳入該參數的可接受的類名嗎? 謝謝!

回答

5

您可以查看「AeroStyle.xml」作爲之前發佈的海報,其中給出了Vista/Aero的確切列表。但是,如果你想玩的安全(你可能會這樣做),類名一般應該是Windows公共控件的Windows類名。例如,按鈕和複選框使用類名「Button」,編輯控件「Edit」等。我通常選擇與我正在處理的任何自定義元素最接近的控件的類名稱,並使用主題數據。通過這種方式,無論用戶選擇的主題是什麼,您都可以獲得適用於XP,Vista和(有希望)Windows 7的代碼。

但是,除非您使用原始Win32很多,否則您可能不直接使用類名進行大量控件創建。 MSDN中的類名相當寬鬆。一個很好的開始的地方通常是Platform SDK中的「CommCtrl.h」文件,它有很多這樣的文件,它們總是在MSDN幫助中描述的各個通用控件中。您也可以通過在文本編輯器中打開它們來查看.rc文件中如何定義對話框來了解它們:它們包含控件的類名稱。

4

類名取決於主題。例如,作爲OpenThemeData狀態的文檔:

的Aero主題的類名 在AeroStyle.xml,這是 在 Microsoft Windows軟件開發工具包 的包含文件夾中找到(SDK)中定義。

0

它與Aero無關,它甚至不會在XP上退出! 參見OpenThemeData()..的源代碼

+0

Aero作爲一個例子在哪裏尋找關於主題支持的各種類名的更多信息。你不應該暗示沒有指定的連接。 – 2008-10-20 17:55:18

10

MSDN上的製品Parts and States包含一個表,其示出了控制,和狀態。表中的值在Vsstyle.hVssym32.h中定義。

這裏是一個快速參考:

BUTTON, CLOCK, COMBOBOX, COMMUNICATIONS, CONTROLPANEL, DATEPICKER, DRAGDROP, 
EDIT, EXPLORERBAR, FLYOUT, GLOBALS, HEADER, LISTBOX, LISTVIEW, MENU, MENUBAND, 
NAVIGATION, PAGE, PROGRESS, REBAR, SCROLLBAR, SEARCHEDITBOX, SPIN, STARTPANEL, 
STATUS, TAB, TASKBAND, TASKBAR, TASKDIALOG, TEXTSTYLE, TOOLBAR, TOOLTIP, 
TRACKBAR, TRAYNOTIFY, TREEVIEW, WINDOW 

的問題的答案Windows Visual Themes: Gallery of Parts and States?提供「零件和國家資源管理器」應用程序,你可以瀏覽和測試大部分的風格。