1

Shell_NotifyIcon() を使用してシステム トレイにアイコンを追加したいのですが、アプリケーションにウィンドウを表示したくありません。そのため、メッセージのみのウィンドウへのハンドルを Shell_NotifyIcon() に渡しています。ウィンドウは次のように作成されました。

hTrayWnd = CreateWindowEx(0, CLASSNAME, "tray_dummy", 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, HINSTANCE, NULL);

CLASSNAME は、RegisterClassEx() を使用して登録したクラスの名前を指し、HINSTANCE はインスタンスのハンドルです。

問題は次のとおりです。トレイ アイコンが追加されますが、クラスの WindowProc() が呼び出されません。代わりに通常のトップレベル ウィンドウを使用すると、すべて正常に動作します。

トップレベル ウィンドウなしでトレイ アイコンを作成する方法はありませんか? トップレベルウィンドウのないトレイアイコンを持つアプリを見たことがありますので、どうにかできるはずです。しかし、HWND_MESSAGE ウィンドウでは機能しないのはなぜですか?

ありがとう!

4

1 に答える 1

2

おっと、すみません、それは私のせいでした。うまくいかなかったのは、別のスレッドから CreateWindowEx() を呼び出したためです。メインスレッドを使用すると、正常に動作します。

于 2012-09-21T18:30:43.403 に答える