
Windowsプログラミングでのタスクトレイへの格納について
以下の動作を実現したいです。
(1)初回プログラム起動時タスクトレイにアイコン表示
(2)タスクトレイアイコンのポップアップメニューからプログラムのリージョンウィンドウを表示できる
(3)以後デスクトップとタスクトレイ間で出し入れ可能
Shell_NotifyIcon関数などをつかってプログラム起動後メニューなどからメッセージをつかんで出し入れはできるのですが、初回起動時にタスクトレイに格納しようとするとリージョンウィンドウが表示されたままタスクトレイにアイコンが追加されてしまいます。起動時にタスクトレイのみに表示されるようにする方法分かる方教えてくださいお願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示

No.1
- 回答日時:
開発環境が何なのか言語が何なのか MFC を使うのか ATL/WTL を使うのか、いずれも全然書いてないので分かりませんが、C/C++ で Windows API 直叩きならば、WM_WINDOWPOSCHANGING メッセージを処理します。
ウィンドウ プロシージャの LPARAM に WINDOWPOS 構造体へのポインタが渡されるので、ウィンドウを表示するか否かのフラグに応じて
bool g_showWindow = false;
switch (msg)
{
case WM_WINDOWPOSCHANGING:
if (!g_showWindow)
{
WINDOWPOS* lpwndpos = reinterpret_cast<WINDOWPOS*>(lParam);
lpwndpos->flags &= ~SWP_SHOWWINDOW;
lpwndpos->flags |= SWP_HIDEWINDOW;
return 0;
}
break;
}
上記において表示フラグはグローバル変数と仮定して書いてますが、C++ ならば適当にウィンドウ管理クラスのメンバーとかにしといてください。
あとはタスクトレイの NOTIFYICONDATA::uCallbackMessage メンバーに指定したカスタム メッセージのハンドラで、
switch (msg)
{
case (カスタム メッセージ):
switch (lParam)
{
case WM_LBUTTONDOWN:
::SetForegroundWindow(hWnd);
g_showWindow = !g_showWindow;
if (g_showWindow)
{
::ShowWindow(hWnd, SW_SHOWNORMAL);
}
else
{
::ShowWindow(hWnd, SW_HIDE);
}
::PostMessage(hWnd, WM_NULL, 0, 0);
break;
}
return 0;
}
のようにしてフラグとウィンドウ表示状態を切り替えるだけです。
http://msdn.microsoft.com/en-us/library/ms632653 …
http://msdn.microsoft.com/ja-jp/library/xz5c4859 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
Alt+P,Alt+NをPostmessageで送...
-
ゲームでは結局どっちが良いの?
-
Vba LongPtrについて教えてくだ...
-
皆さん、おはようございます♪ ...
-
VBAでのタイトルバーの取得
-
Excel VBA での画面最大化のロ...
-
VBAで単一ブック複数窓を閉じる...
-
ラジオボタンの初期指定
-
勝手にウィンドウが開いて止ま...
-
ウィンドウハンドルって途中で...
-
メッセージをスルー
-
他のアプリケーションの終了処理
-
UWSCで特定のChromeのタブをア...
-
CTなどでいう,ウィンドウレベ...
-
非アクティブのウィンドウを最...
-
DellノートPC購入で悩んでいま...
-
focusメソッドを使ってもカーソ...
-
SendMessage関数がうまく動作し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
ラジオボタンの初期指定
-
勝手にウィンドウが開いて止ま...
-
皆さん、おはようございます♪ ...
-
検索の画面がでなくなってしま...
-
Vba LongPtrについて教えてくだ...
-
【VB2008】 マウス操作の一時的...
-
[VBA] UserForm を Excel の W...
-
VBA .Value=.Value ?
-
Excelの上下を固定したい
-
UWSCで特定のChromeのタブをア...
-
ExcelのBOOKが消えた!
-
「&HFFFF」「&H1A」とは?
-
ゲームでは結局どっちが良いの?
-
作成したウインドウのサイズを...
-
エクセルで1行目から3行目が消...
-
Console.WriteLine で表示されない
-
Alt+P,Alt+NをPostmessageで送...
-
EnumChildWindowsの使い方(VBA)
おすすめ情報