シェルが死んだときに、タスクトレイアイコンを復活させる

NaiNaiやその他の多くいくつかのタスクトレイ型アプリケーションでは、シェルが死んでしまった後、タスクトレイのアイコンが消えてしまいます。
これを回避するには、ちょっとした儀式が必要です。

タスクバーが死んで再度生成されると、TaskbarCreated という名前のメッセージがとんできます。
このメッセージは、プロセスをまたいで送られるメッセージなので、特別な方法でその名前とメッセージIDをシステム上で一意にしなければなりません。

やることは簡単で、
x = RegisterWindowMessage(_T("TaskbarCreated"))

とコールします。
すると、戻り値xには、その名前(ここでは TaskbarCreated )に関連付けられたメッセージIDが返ってきます。
後は、メッセージループ内か、MFCならON_REGISTERED_MESSAGE()マクロでそのメッセージ用のハンドラを定義し、この中でタスクトレイへの再登録処理を行います。
ON_REGISTERED_MESSAGE()マクロの第1引数はメッセージIDですが、対象のウインドウのクラスのメンバにする場合には、スタティックで宣言します。
ON_REGISTERED_MESSAGE(CXXXWnd::_nTaskbarCreatedMessage, OnTaskbarCreated)

関数プロトタイプは以下の通り。
afx_msg LRESULT OnTaskbarCreated(WPARAM, LPARAM);

[PR]
by isoq | 2004-03-30 09:51 | C/C++/Win32
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇
<< NaiNai v1.0.3 さぼり >>