- 記事
- 06/30/2021
- 9 読むべき分
-
- j
- c
- D
- m
- m
このトピックでは、一般的なコントロールがユーザーの好みの視覚スタイルで表示されるようにアプリケーションを構成する方法について説明します。
このトピックには、次のセクションが含まれています。
- マニフェストまたはディレクティブを使用して、Comctl32を使用してビジュアルスタイルをアプリケーション
- に適用できるようにします。コントロールパネルでComctl32バージョン6を使用して標準拡張
- のみを使用するアプリケーションのdllバージョン6、またはRundll32によって実行されるDLL。exe
- 拡張機能、プラグイン、MMCスナップイン、またはプロセスに取り込まれたDLLにビジュアルスタイルサポートを追加する
- ビジュアルスタイルをオフにする
- HTMLコンテン5877>
マニフェストまたはディレクティブの使用アプリケーションに視覚スタイルを適用できるようにする
アプリケーションで視覚スタイルを使用できるようにするには、Comctl32を使用する必要があります。dllバージョン6以降。 バージョン6は再配布可能ではないため、アプリケーションがそれを含むバージョンのWindowsで実行されている場合にのみ使用できます。 Windowsにはバージョン5とバージョン6の両方が同梱されています。 Comctl32.dllバージョン6には、ユーザーコントロールと共通コントロールの両方が含まれています。 既定では、アプリケーションはUser32で定義されたユーザーコントロールを使用します。dllとComctl32で定義された共通コントロール。dllバージョン5. DLLのバージョンとその配布プラットフォームの一覧については、”共通コントロールのバージョン”を参照してください。
アプリケーションでビジュアルスタイルを使用する場合は、Comctl32を示すアプリケーションマニフェストまたはコンパイラーディレクティブを追加する必dllバージョン6が利用可能な場合は、dllバージョン6を使用する必要があります。
アプリケーションマニフェストを使用すると、アプリケーションは必要なアセンブリのバージョンを指定できます。 Microsoft Win32では、アセンブリはDllのセットと、それらのDll内に含まれているバージョン対応オブジェクトのリストです。
マニフェストはXMLで記述されています。 アプリケーションマニフェストファイルの名前は、実行可能ファイルの名前の後にファイル名拡張子を付けたものです。マニフェスト; たとえば、MyApp。exe”を起動します。マニフェスト 次のサンプルマニフェストは、最初のセクションでマニフェスト自体について説明していることを示しています。 次の表は、マニフェストの説明セクションのassemblyIdentity要素によって設定された属性を示しています。
属性 | 説明 |
---|---|
バージョン | マニフェストのバージョン。 バージョンはmajorの形式である必要があります。マイナー。改訂版。ビルド(つまり、n.n.n.n、n<=65535)。 |
processorArchitecture | アプリケーションが開発されているプロセッサ。 |
名前 | には、会社名、製品名、アプリケーション名が含まれます。 |
Win32などのアプリケーションの種類を入力します。 |
サンプルマニフェストには、アプリケーションの説明とアプリケーションの依存関係も指定します。 次の表は、依存関係セクションのassemblyIdentity要素によって設定された属性を示しています。
属性 | 説明 |
---|---|
Win32などの依存関係コンポーネントの種類を | と入力します。 |
名前 | コンポーネントの名前。 |
バージョン | コンポーネントのバージョン。 |
processorArchitecture | コンポーネントが設計されているプロセッサ。 |
publickey token | このコンポーネントで使用されるキートークン。 |
言語 | コンポーネントの言語。 |
マニフェストファイルの例を次に示します。
重要
アプリケーションが32ビットWindowsプラットフォームを対象としている場合はprocessorArchitectureエントリを”X86″に設定し、アプリケーションが64ビットWindowsプラット また、次の例に示すように、すべてのプラットフォームが対象となるように”*”を指定することもできます。
<?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="*" name="CompanyName.ProductName.YourApplication" type="win32"/><description>Your application description here.</description><dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly></dependency></assembly>
Microsoft Visual C++2005以降を使用している場合は、マニフェストを手動で作成する代わりに、次のコンパイラディレクティブをソースコードに追加できます。 可読性のために、ディレクティブはここでいくつかの行に分割されています。
#pragma comment(linker,"\"/manifestdependency:type='win32' \name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
次のトピックでは、さまざまな種類のアプリケーションにビジュアルスタイルを適用する手順について説明します。 マニフェストの形式は、それぞれの場合で同じであることに注意してください。
Comctl32を使用します。dllバージョン6標準拡張機能
のみを使用するアプリケーションでは、サードパーティの拡張機能を使用しないアプリケーションの例を次に示します。
- 電卓
- フリーセル(Windows VistaおよびWindows7の場合)
- 掃海艇(Windows VistaおよびWindows7の場合)
- メモ帳
- ソリティア(Windows VistaおよびWindows7の場合)
- ソリティア(Windows VistaおよびWindows7の場合)
- ソリティア(Windows VistaおよびWindowsの場合)
- ソリティア(Windows VistaおよびWindowsの場合)
- ソリティア(Windows VistaおよびWindowsの場合)
7)
マニフェストを作成し、アプリケーションでビジュアルスタイルを使用できるようにするには。
-
Comctl32へのリンク。libとinitcommoncontrolsを呼び出します。
-
YourAppというファイルを追加します。exe”を起動します。XMLマニフェスト形式のソースツリーにマニフェストします。
<?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="*" name="CompanyName.ProductName.YourApplication" type="win32"/><description>Your application description here.</description><dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly></dependency></assembly>
-
マニフェストを次のようにアプリケーションのリソースファイルに追加します:
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"
注
前のエントリをリソースに追加するときは、1行で書式設定する必要があります。 または、XMLマニフェストファイルをアプリケーションの実行可能ファイルと同じディレクトリに配置することもできます。 オペレーティングシステムは、まずファイルシステムからマニフェストをロードし、次に実行可能ファイルのリソースセクションをチェックします。 ファイルシステムのバージョンが優先されます。
アプリケーションをビルドすると、マニフェストはバイナリリソースとして追加されます。
コントロールパネルでComctl32バージョン6を使用するか、Rundll32によって実行されるDLLを使用します。exe
マニフェストを作成し、アプリケーションがビジュアルスタイルを使用できるようにします。
-
Comctl32へのリンク。libとinitcommoncontrolsを呼び出します。
-
YourAppというファイルを追加します。cpl.manifestは、XMLマニフェスト形式を持つソースツリーに表示されます。
<?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="*" name="CompanyName.ProductName.YourApplication" type="win32"/><description>Your application description here.</description><dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly></dependency></assembly>
-
マニフェストをアプリケーションのリソースファイルにリソースID123として追加します。
メモ
コントロールパネルアプリケーションを作成するときは、適切なカテゴリに配置します。 コントロールパネルは現在、コントロールパネルのアプリケーションの分類をサポートしています。 つまり、コントロールパネルアプリケーションに識別子を割り当て、プログラムの追加と削除、外観とテーマ、日付、時刻、言語、地域オプションなどのタスク領域に区切ることができます。
プロセスに取り込まれた拡張機能、プラグイン、MMCスナップイン、またはDLLへのビジュアルスタイルサポートの追加
ビジュアルスタイルのサポート たとえば、Microsoft管理コンソール(MMC)スナップインのビジュアルスタイルサポートを追加するには、次の手順を実行します。
-
-DISOLATION_AWARE_ENABLEDフラグを使用してスナップインをコンパイルするか、#include”windows”の前に次のステートメントを挿入します。h”ステートメント。
#define ISOLATION_AWARE_ENABLED 1
ISOLATION_AWARE_ENABLEDの詳細については、コンポーネントの分離を参照してください。
-
共通コントロールヘッダーファイルをスナップインソースに含めます。
#include <commctrl.h>
-
YourAppというファイルを追加します。XMLマニフェスト形式を使用するソースツリーにマニフェストします。
<?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="*" name="CompanyName.ProductName.YourApplication" type="win32"/><description>Your application description here.</description><dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly></dependency></assembly>
-
マニフェストをスナップインのリソースファイルに追加します。 リソースファイルへのマニフェストの追加の詳細については、”拡張機能、プラグイン、またはプロセスに取り込まれたDLLを使用するアプリケーションでのComctl32バージョン6の使用”を参照してください。
ビジュアルスタイルを無効にする
次のようにSetWindowTheme関数を呼び出すと、コントロールまたはウィンドウ内のすべてのコントロールのビジュアルスタイ:
SetWindowTheme(hwnd, L" ", L" ");
前の例では、hwndは、視覚的なスタイルを無効にするウィンドウのハンドルです。 呼び出しの後、コントロールは視覚的なスタイルなしでレンダリングされます。
HTMLコンテンツでのビジュアルスタイルの使用
背景や境界線などのカスケーディングスタイルシート(CSS)プロパティを変更するHTMLページには、ビジュアル 指定されたCSS属性が表示されます。 コンテンツの一部として指定すると、ほとんどのCSSプロパティは視覚スタイルが適用されている要素に適用されます。
既定では、Visualスタイルは、microsoft Internet Explorer6以降のバージョンで表示されるページの組み込みのHTMLコントロールに適用されます。 HTMLページのビジュアルスタイルを無効にするには、
セクションにMETAタグを追加します。 この手法は、HTMLアプリケーション(Hta)としてパッケージ化されたコンテンツにも適用されます。 視覚的なスタイルをオフにするには、METAタグは次のようにする必要があります:
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="no">
注
ブラウザの設定とタグの設定が一致しない場合、ページは視覚的なスタイルを適用しません。 たとえば、METAタグが”no”に設定され、ブラウザがビジュアルスタイルを有効にするように設定されている場合、ビジュアルスタイルはページに適用され ただし、browserタグまたはMETAタグのいずれかが”yes”に設定されていて、他の項目が指定されていない場合は、視覚的なスタイルが適用されます。
ビジュアルスタイルは、コンテンツのレイアウトを変更する可能性があります。 また、ボタンの幅などの固有のHTMLコントロールに特定の属性を設定すると、特定のビジュアルスタイルではボタンのラベルが読めないことがあります。
ビジュアルスタイルを使用してコンテンツを徹底的にテストし、ビジュアルスタイルの適用がコンテンツとレイアウトに悪影響を及ぼすかど
ビジュアルスタイルが適用されていない場合
トップレベルのウィンドウにビジュアルスタイルが適用されないようにするには、ウィンドウにnull以外の領域(SetWindowRgn)を指定します。 システムでは、NULL以外の領域を持つウィンドウは、ビジュアルスタイルを使用しない特殊なウィンドウであると想定しています。 非ビジュアルスタイルトップレベルウィンドウに関連付けられている子ウィンドウは、親ウィンドウには適用されませんが、ビジュアルスタイ
アプリケーション内のすべてのウィンドウのビジュアルスタイルの使用を無効にする場合は、SetThemeAppPropertiesを呼び出し、STAP_ALLOW_NONCLIENTフラグを渡さないでください。 アプリケーションがSetThemeAppPropertiesを呼び出さない場合、想定されるフラグ値はSTAP_ALLOW_NONCLIENT|STAP_ALLOW_CONTROLS|STAP_ALLOW_WEBCONTENTです。 想定される値により、非クライアント領域、コントロール、およびwebコンテンツに視覚的なスタイルが適用されます。
アプリケーションを以前のバージョンのWindowsと互換性を持たせる
ビジュアルスタイルアーキテクチャの多くは、コントロールの外観の変更をサポートしていない以前のバージョンのWindowsで製品を出荷し続けることを簡単にするように設計されています。 複数のオペレーティングシステム用のアプリケーションを出荷する場合は、次の点に注意してください:
- Windows8より前のバージョンのWindowsでは、高コントラストがオンの場合、ビジュアルスタイルはオフになります。 高コントラストをサポートするには、ビジュアルスタイルをサポートする従来のアプリケーションで、高コントラストでUI要素を適切に描画するための別のコードパスを提供する必要があります。 ただし、Windows8アプリケーション(アプリケーションマニフェストの互換性セクションにWindows8GUIDが含まれているアプリケーション)では、以前のWindows7でハイコン
- Comctl32の機能を使用する場合。タイルビューやリンクコントロールなどのdllバージョン6では、これらのコントロールがユーザーのコンピューターで使用できない場合に対処する必要があります。 Comctl32.dllバージョン6は再配布可能ではありません。
- アプリケーションをテストして、Comctl32の機能に依存していないことを確認します。最初に現在のバージョンを確認せずにdllバージョン6。
- はUxThemeにリンクしません。リブ…
- ビジュアルスタイルが期待どおりに動作しない場合のインスタンスのエラー処理コードを記述します。
- 以前のバージョンでアプリケーションのマニフェストをインストールしても、コントロールのレンダリングには影響しません。