アプリケーションのモジュール クラスです。
WTL を利用する際には、この型のオブジェクトを _Module という名前でグローバルに定義する必要があります。
(プロジェクトをウィザードを利用して作成した場合、通常定義されています)
COM サーバー アプリケーションの場合は、代わりに CServerAppModule クラスを利用します。
プログラムは、開始時に Init メソッド、終了時に Term メソッドをそれぞれ呼び出す必要があります。
これらのメソッドは、CComModule クラスの Init メソッド、および Term メソッドをそれぞれオーバーライドしています。
また、メッセージ ループを開始する前に AddMessageLoop メソッドを呼び出して登録し、終了した後に RemoveMessageLoop メソッドを呼び出して登録を解除する必要があります。
メッセージ ハンドラの中でメッセージ ループ オブジェクトにアクセスしたい場合、このクラスの GetMessageLoop メソッドを呼び出します。
本来、Windows の設定変更の通知である WM_SETTINGCHANGE メッセージは全てのトップレベル ウィンドウに対して送信されますが、トップレベルでないウィンドウもこの通知を受け取りたい場合、このクラスを利用することができます。
(おそらくですが、そういう意図のために実装されているものと思われます)
このクラスの InitSettingChangeNotify メソッドを呼び出して初期化し、AddSettingChangeNotify メソッドを呼び出してウィンドウを登録します。
不要になった時点で RemoveSettingChangeNotify メソッドを呼び出してウィンドウの登録を解除し、TermSettingChangeNotify メソッドを呼び出す必要があります。
このクラスにおける Windows の設定変更の通知の実装は以下のようになっています。
InitSettingChangeNotify メソッドでは、WM_SETTINGCHANGE メッセージを受け取るためにダイアログを作成します。
ダイアログに WM_SETTINGCHANGE メッセージが送信されたら、登録されているウィンドウに対して同じ内容の WM_SETTINGCHANGE メッセージを送信します。
このときの送信は SendMessageTimeout API を呼び出すことにより行われ、そのタイムアウトは 1,500 ミリ秒です。
タイプ : クラス
継承クラス : ATL::CComModule
ヘッダ : atlapp.h
_SettingChangeDlgProc
設定変更の通知を受け取るダイアログのプロシージャです。
AddMessageLoop
メッセージ ループを登録します。
AddSettingChangeNotify
Windows の設定変更の通知を受け取るウィンドウを登録します。
GetMessageLoop
メッセージ ループ オブジェクトを取得します。
Init
モジュールの初期化処理を行います。
InitSettingChangeNotify
Windows の設定変更の通知の初期化処理を行います。
RemoveMessageLoop
メッセージ ループの登録を解除します。
RemoveSettingChangeNotify
Windows の設定変更の通知を受け取るウィンドウの登録を解除します。
Term
モジュールの終了処理を行います。
TermSettingChangeNotify
Windows の設定変更の通知の終了処理を行います。
設定変更の通知を受け取るダイアログのプロシージャです。
HWND hWnd
ウィンドウ ハンドルです。
UINT uMsg
送信された、またはポストされたメッセージです。
WPARAM wParam
メッセージに付加されたパラメータです。
LPARAM lParam
メッセージに付加されたパラメータです。
独自の処理を行ったかどうかを返します。
このプロシージャでは、WM_SETTINGCHANGE メッセージについてのみ独自の処理を行います。
メッセージ ループを登録します。
CMessageLoop* pMsgLoop
登録するメッセージ ループを指定します。
登録に成功したかどうかを返します。
Windows の設定変更の通知を受け取るウィンドウを登録します。
HWND hWnd
登録するウィンドウを指定します。
登録に成功したかどうかを返します。
メッセージ ループ オブジェクトを取得します。
DWORD dwThreadID = ::GetCurrentThreadId()
スレッド ID を指定します。既定ではカレント スレッドの ID です。
指定したスレッド ID に対応したメッセージ ループ オブジェクトを返します。
モジュールの初期化処理を行います。
ATL::_ATL_OBJMAP_ENTRY* pObjMap
オブジェクト マップの配列を指定します。NULL を指定することができます。
HINSTANCE hInstance
インスタンス ハンドルを指定します。
const GUID* pLibID = NULL
ライブラリ ID を指定します。既定では NULL です。
初期化処理に成功したかどうかを返します。
Windows の設定変更の通知の初期化処理を行います。
DLGPROC pfnDlgProc = _SettingChangeDlgProc
ダイアログ プロシージャを指定します。既定ではこのクラスで実装されている _SettingChangeDlgProc プロシージャです。
初期化処理に成功したかどうかを返します。
MSDI (マルチスレッド SDI) アプリケーションでは、このメソッドをメイン スレッドから呼び出してください。
メッセージ ループの登録を解除します。
引数はありません。
登録の解除に成功したかどうかを返します。
このメソッドは、カレント スレッドの ID に対応するメッセージ ループの登録を解除します。
Windows の設定変更の通知を受け取るウィンドウの登録を解除します。
HWND hWnd
登録を解除するウィンドウを指定します。
登録の解除に成功したかどうかを返します。
モジュールの終了処理を行います。
引数はありません。
戻り値はありません。
Windows の設定変更の通知の終了処理を行います。
引数はありません。
戻り値はありません。
ページの先頭へ戻る
リファレンスへ戻る
WTL へ戻る
トップ ページへ戻る