簡體   English   中英

添加 syslink 不顯示 mfc 對話框

[英]adding syslink not displaying mfc dialog box

起初將 syslink 添加到我的對話框中,阻止它打開。 我被要求在我的代碼中添加以下行以顯示帶有“Syslink”控件的對話框。

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

當我將此行添加到我的 VS 項目時,它運行良好。 這行代碼意味着什么?

其次,當我在另一個項目的 .rc 文件和 resource.h 文件中為對話框和 syslink 控件添加相同的代碼時,當我使用 make 文件編譯它時,我遇到了同樣的問題。 但是這次我添加了#pragma 注釋行。 (僅供參考 - 如果我從 rc 文件中刪除 syslink 控件,則對話框工作正常)。 可能是什么問題呢 ?

編譯指示導致將Microsoft庫鏈接到您的程序。 要使用這些“通用控件6”,您還需要在程序啟動期間調用InitCommonControlsEx。

@ ScottMcP-MVP感謝您的回復。

其實我解決了第二個問題。 在我的makefile中,將“ / ALLOWISOLATION:NO”設置為鏈接器選項,該文件將生成目標文件和二進制文件,就好像沒有清單文件一樣。 因此,從makefile編譯時,修改清單的“#pragma注釋”指令無效。 當我刪除該鏈接器選項時,即使沒有調用“ InitCommonControls”,一切都可以正常工作

根據我的理解,指定的“#pragma指令”在目標文件中添加注釋以鏈接公共控件庫,並且還在清單文件中添加條目以鏈接公共控件庫(僅當其版本為6或更高版本時)。 (由於syslink僅從版本6定義)

如果我錯了,請糾正我。

這修復了SYSLink控件

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

您注意到在對話框表單編輯器中添加SYSLink看起來不錯,但是在運行實際應用程序時,它將加載一個對話框,該對話框將完全空白所有缺少的控件等。有人說它根本不會加載對話框。修復它的唯一方法。

它失敗,因為它需要Unicode文本支持,該文本默認情況下未加載,它位於Comctl32.dll文件版本6中。

ComCtl32.dll版本6中定義的所有新功能僅支持Unicode。 因此,您不能創建SysLink控件的ANSI版本,只能創建Unicode版本。

另外不要忘記檢查您是否有標志 /MANIFEST:YES 否則它將不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM