2009-09-25 49 views
2

我想製作一個按鈕,但它總是看起來像windows 95平面按鈕。我如何讓它看起來遠景風格?用C++/win32正常看按鈕

hWndEdit = CreateWindowA("button", "Test", 
     WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 
100, 20, 140, 20, hWnd, NULL, NULL, NULL); 

我在哪裏錯了? 謝謝

回答

7

它只能在Vista中看Vista風格,介意你。您的應用程序還必須根據http://msdn.microsoft.com/en-us/library/aa289524(v=VS.71).aspx嵌入清單以啓用視覺樣式。

+1

鏈接不再工作。 – ALOToverflow 2010-12-20 03:36:13

+0

-1這個答案在鏈接工作時可能有用,但現在鏈接已經死了,這裏沒有其他內容。 – Marc 2012-02-25 16:47:18

+0

@Marc我已更正鏈接。 Boo @微軟。 – 2012-02-26 22:05:30

3

您需要爲指定要使用主題的.exe添加清單。默認行爲是爲了兼容性而使用Win9x/NT/2K控件 - 主題XP +控件略大。 This解釋瞭如何詳細添加這樣的清單。

6

在您的項目目錄(MyApp是您的應用程序的名稱)中創建一個名爲「MyApp.exe.manifest」的文件。然後用你喜歡的編輯器打開它,並複製&過去按照它的代碼:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">  
<assemblyIdentity  
    version="1.0.0.0"  
    processorArchitecture="X86"  
    name="CompanyName.ProductName.YourApp"  
    type="win32"  
/> 

<description>Your application description here.</description>  
<dependency>  
<dependentAssembly>  
     <assemblyIdentity  
      type="win32"  
      name="Microsoft.Windows.Common-Controls"  
      version="6.0.0.0"  
      processorArchitecture="X86"  
      publicKeyToken="6595b64144ccf1df"  
      language="*"  
     />  
    </dependentAssembly>  
</dependency>  
</assembly> 

而且你已經做之後,將此文件添加到您的Visual Studio項目(該項目的圖標上單擊右鍵,選擇「添加「 - >」現有項目」

添加此清單文件到你的VS解決方案足以啓用XP主題

希望這有助於...

4

什麼是構建環境如果。?它的Visual Studio 2005或2008,然後是a如果其他清單建議不適用於VS8並且已經包含清單信息。

在這種情況下,最簡單的方法來添加一個清單的依賴是利​​用一個簡單的(Microsoft專用)編譯器指令,你添加一些CPP或頭文件:

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

包括清單這樣避免混淆了c運行時清單依賴或搞亂UAC正常工作所需的設置。

+0

取而代之的是指定架構,你可以使用*而不是x86:processorArchitecture ='*'編輯:意識到這是來自2009年..對不起:凹凸:P – joell 2013-05-03 12:13:22