バージョン

menu_open
Wwise SDK 2023.1.8
Windowsフロントエンドの実装

このページでは、Windowsグラフィカルユーザーインターフェース(GUI)の実装に関わる様々な要素について説明します。

注釈: Wwise Authoringアプリケーションは、macOSで稼働させるために、オープンソースプロジェクトWineに基づいたブリッジレイアCrossoverを使います。 Windows用にGUI実装を作成すれば、同じ実装がこのソリューションを通してmacOSでも動きます。

プラグインのプロパティにバインドされたコントロール機能のある、特定タイプのダイアログを、Wwiseがインスタンス化できるように、基底クラス AK::Wwise::Plugin::GUIWindows が実装メソッドを提供します。また、あなたのプラグインビューインスタンスに向けられたWindowsイベントに対し、プラグインが行動できるように、標準Win32ウィンドウプロシージャ("WindowProc")が提供されます。

Wwise Authoringアプリケーションが以下のようにあなたのプラグインGUIをインスタンス化します。

  • Wwiseが AK::Wwise::Plugin::GUIWindows::GetDialog() をコールして、特定タイプのダイアログがインスタンス化されるのを、プラグインがリクエストします( ダイアログアクイジション 参照)。
  • もし プラグインのフロントエンドが、そのダイアログタイプに対応していれば、プラグインがそのタイプに対応するリソースダイアログIDを返し、さらに、どのコントロールIDが、プロパティセットのどのプロパティキーに対応するのかを、Wwiseに伝えるプロパティバインディング表(プラグインXMLで定義、詳細は Wwiseプラグイン XML 記述ファイル 参照)があれば、それも返します。
  • その ダイアログは、プラグインが提供するリソースハンドルを使い、Wwiseによってインスタンス化されます( リソースハンドル 参照)。
  • Windows が、WM_INITDIALOGなどのイベントで、WindowProcをコールし始めます。

以下のセクションで、メソッドごとの実装方法を説明します。

MFCを使う

WindowsのWwise Authoring GUIは、Microsoft Foundation Classes (MFC)を使ってビルドされています。 プラグインにMFCを使用するかどうかは任意ですが、使う場合は、ライブラリの初期化が必要です。 これを提供するのは、サービス AK::Wwise::Plugin::PluginMFCWindows です。ほかよりも先に初期化されるように、必ず最初の基底クラスにしてください。

注釈: あなたのプラグインのバックエンド部分では、MFCやその他のGUI関連ライブラリを必要としないはずなので、この基底クラスから派生 させないでください

リソースハンドル

リソースハンドルは、タイプ HINSTANCE で、 .rc ファイルからコンパイルされたリソースデータを保持するあなたの動的ライブラリに対応しています。Microsoft Visual Studioを使って作成することができ、あなたのカスタムダイアログや、そのコンテンツを保持しています。 リソースファイルの作成方法など、詳細は、 Microsoftドキュメンテーション を参照してください。

デフォルトの実装では、MSVCリンカーがインジェクトしたbuiltinの、モジュールインスタンスが提供されています。

あなたのダイアログリソースを所有するのが、別のモジュールでない限り、この関数を実装する必要はありません。

リソースファイル( .rc )を作成するには、 Creating Resource Files for Your Plug-in を参照してください。

ダイアログアクイジション

現在、Wwiseが AK::Wwise::Plugin::eDialog で定義するダイアログは、2タイプあります:

  • SettingsDialog: Source EditorやEffect Editorのために使われる、メインのプラグインダイアログ
  • ContentsEditorDialog: SourceプラグインがContents Editorだけで使う、小さいダイアログ

続いて、Wwiseに返されたダイアログが、提供された リソースハンドル を使ってインスタンス化されます。 プロパティを、あなたのダイアログ中のコントロールに紐づけるために、プラグインのXML定義にあるプロパティ名に、コントロールIDをマッピングした表が使われます。この表は、以下のようにマクロを使って作成されます:

この例で、表(table)はコントロールのIDC_MYPROPERTY_EDIT(.rcファイルに伴うresource.h fileより)を、プロパティのMyPropertyにマッピングしますが、このプロパティはプラグインのXML定義で定義されたプロパティに連動する必要があります。

これで変数PropertyTableがインスタンス化され、それをWwise AuthoringアプリケーションにGetDialog()で転送します:

この関数でfalseを返すと、ダイアログがインスタンス化されないだけで、その代わりにデフォルトのものがインスタンス化されます。

あなたのダイアログで使える具体的なコントロールや、それらをプロパティにバインドする方法など、詳細な説明については Wwise プラグインのダイアログリファレンス を参照してください。

WindowProcを通したWindowsイベントハンドリング

UIが変更されたときにコントロールを有効・無効にするなど、指定したアクションが起きるようにするには、受信したウィンドウメッセージを AK::Wwise::Plugin::GUIWindows::WindowProc() 関数で解釈します:

プラグインのヘルプを表示させる

Wwiseユーザーがプラグインのダイアログタイトルバーにある'?'アイコンをクリックすると、プラグインのフロントエンドで、 AK::Wwise::Plugin::GUIWindows::Help() がコールされます。ヘルプを実装するには、HTMLHelp、WinHelp、サードパーティのヘルプブラウザなど、様々なツールを使えます。関数は、表示させるウィンドウの親として使用可能なウィンドウハンドルを、受け取ります。 AK::Wwise::Plugin::eDialog パラメータが、Wwiseユーザーが開いているダイアログに合った、具体的なヘルプトピックを選択できるようにしてくれます。Helpリクエストにあなたが応対した場合は、この関数は true を返し、それ以外では false を返して、代わりにWwiseがPlug-in Manager関連のHelpトピックを表示します。

注釈: 前述の通り、ソースプラグインにはダイアログが2つあります。 あなたのソースプラグインで、2つのダイアログ用に別々のヘルプトピックがあれば、 AK::Wwise::Plugin::eDialog パラメータを利用してください。

HTMLヘルプを使うソースプラグインで、そのファイルへのパスがMFCによって提供される例を、以下に示します:

注意: AK::Wwise::Plugin::GUIWindows::Help() メソッドが、AfxGetApp()->HtmlHelp() を呼び出してはいけません。 Helpウィンドウを誤った親ウィンドウで起動してしまい、フローティングビューが予期しない動作を起こすためです。 代わりに、上の例で示されているように、 HtmlHelp() を NULL ウィンドウハンドルで使用するようにしてください。
#define AK_WWISE_PLUGIN_GUI_WINDOWS_END_POPULATE_TABLE()
Ends the declaration of a property-control bindings table.
Definition: GUIWindows.h:78
#define AK_WWISE_PLUGIN_GUI_WINDOWS_POP_ITEM(theID, theProp)
Declares an association between a control and a property within a property-control bindings table.
Definition: GUIWindows.h:68
#define NULL
Definition: AkTypes.h:46
Windows frontend plug-in API for Audio plug-ins.
Definition: GUIWindows.h:200
#define AK_WWISE_PLUGIN_GUI_WINDOWS_BEGIN_POPULATE_TABLE(theName)
Starts a new property-control bindings table.
Definition: GUIWindows.h:54
IMAGE_DOS_HEADER __ImageBase
Definition: GUIWindows.h:39
Initializes MFC for this plug-in.

このページはお役に立ちましたか?

サポートは必要ですか?

ご質問や問題、ご不明点はございますか?お気軽にお問い合わせください。

サポートページをご確認ください

あなたのプロジェクトについて教えてください。ご不明な点はありませんか。

プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。

Wwiseからはじめよう