3

私は純粋な WINAPI を使用しており、TB_GETMETRICSメッセージを送信する必要があります。ただし、このメッセージは、Common Controls バージョン 6.0 への参照を含むマニフェスト ファイルをアプリケーションに追加した場合にのみ機能します。追加しました。メッセージは機能していますが、アプリケーションで Vista/Windows 7 のビジュアル スタイルが使用されていません。これは望ましくありません。

マニフェスト ファイルを変更するか、何らかの API 関数を呼び出して、Classic テーマを使用している間、Common Controls 6.0 参照を維持する方法はありますか?

注: SetWindowThemeを試しましたが、Classic と Aero が混在した結果になりました。

編集: SetWindowTheme 関数を正しく読んでいなかったので、親 hWnd に対して呼び出すと、そのすべての子に対して自動的に呼び出されると考えていました。Windows クラシックを使用するコントロールごとに呼び出す必要があることがわかりました。現在は正常に機能しています。

4

2 に答える 2

4

すべてのコントロールのビジュアル スタイルを無効にするには、メイン ウィンドウを作成する前にSetThemeAppProperties(STAP_ALLOW_NONCLIENT)orを呼び出します。SetThemeAppProperties(0)

HWND ごとに視覚スタイルを無効にするには、呼び出すことができますSetWindowTheme(hwndControl,L"",L"")

v6 共通コントロールのないシステムをサポートする必要がある場合は、システム メトリック値とシステム DPI をいじることで、ツール バー コントロールで使用されているシステム メトリック (またはハードコードされた値) を特定できる可能性があります。

于 2012-02-09T17:41:22.093 に答える
1

SetWindowTheme (パラメーターとして L"" を使用) を適切に使用することで解決しました。アプリケーションが作成するすべてのコントロールに対してそれを呼び出すだけで済みました。それはハックのように感じますが、仕事を成し遂げます。

于 2012-02-09T16:53:30.847 に答える