2

最初に、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コントロールを削除すると、ダイアログボックスは正常に機能します)。何が問題なのですか?

4

3 に答える 3

2

プラグマにより、Microsoft ライブラリがプログラムにリンクされます。これらの「共通コントロール 6」を使用するには、プログラムの起動時に InitCommonControlsEx を呼び出す必要もあります。

于 2014-08-20T14:00:05.443 に答える
1

これにより、SYSLink コントロールが修正されます

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

SYSLink を追加すると、ダイアログ フォーム エディターでは見栄えがよくなりますが、実際のアプリケーションを実行すると、すべてのコントロールが欠落しているなど、完全に空白のダイアログが読み込まれます。ダイアログがまったく読み込まれないと言う人もいます。それを修正する唯一の方法。

Comctl32.dll ファイル バージョン 6 にある既定では読み込まれない Unicode テキスト サポートが必要なため、失敗します。

ComCtl32.dll バージョン 6 で定義されたすべての新機能は、Unicode のみをサポートします。したがって、ANSI バージョンの SysLink コントロールを作成することはできず、Unicode バージョンのみを作成できます。

于 2016-01-09T02:39:54.963 に答える