No.3ベストアンサー
- 回答日時:
★アドバイス
・点滅させるときは、非表示のウインドウ・プロシージャを一度表示するようにします。
その後、FlashWindowEx() 関数で点滅の指示を出して 10 秒後に非表示にします。
・下にサンプルを載せます。
サンプル:
#define TID_CLOCK (12345) // タイマーID
#define TID_CYCLE (10000) // タイマー間隔(10秒)
void SetFlash( hWnd ) ←非表示のウインドウ・ハンドルを渡す
{
FLASHWINFO pfwi;
// 10秒間に10回の点滅(1秒に1回点滅×10回)
pfwi.cbSize = sizeof( FLASHWINFO );
pfwi.hwnd = hWnd;// ウインドウ・ハンドル
pfwi.uCount = 10;// 点滅回数
pfwi.dwTimeout = 500;// 点滅間隔(ms)
pfwi.dwFlags = FLASHW_TRAY;
FlashWindowEx( &pfwi );// 点滅
SetTimer( hWnd, TID_CLOCK, TID_CYCLE, NULL );
ShowWindow( hWnd, SW_SHOW );
↑
非表示ウインドウを表示
}
case WM_TIMER:
タイマー部で非表示ウインドウを非表示に戻す
↓
ShowWindow( hWnd, SW_HIDE );
KillTimer( hWnd, TID_CLOCK );
break;
最後に:
・非表示のウインドウは起動時に最小化しておきます。
ウインドウを作成するときに SW_SHOWMINNOACTIVE か、SW_MINIMIZE の定数にします。
・点滅させたいときは上記のサンプルにある SetFlash() 関数を呼んで下さい。
呼ばれると 10 秒間だけ点滅してその後に WM_TIMER で非表示となり消える仕組みです。
あと設定したタイマーも KillTimer() 関数で破棄します。
・なお、WM_TIMER メッセージの処理は非表示にしているウインドウ・プロシージャに
記述して下さい。
・以上。
たいへん丁寧に説明して頂きありがとうございます。
希望通りの処理ができるようになりました。
点滅しなかったのは、Sleepで簡単にテストしたのが原因でした。
メッセージ処理をしないとだめなのですね。
また、「タスクバーを自動的に隠す」にしておいても、
点滅時にタスクバーを表示してくれるので助かります。
参考までに、ソースを載せておきます。
FLASHWINFO pfwi;
pfwi.cbSize = sizeof( FLASHWINFO );
pfwi.hwnd = hwnd;
pfwi.dwFlags = FLASHW_TRAY | FLASHW_TIMERNOFG;
pfwi.uCount = 0;
pfwi.dwTimeout = 0;
FlashWindowEx( &pfwi );
ShowWindow( hwnd, SW_MINIMIZE );
No.2
- 回答日時:
★訂正。
・定数を間違っていました。
間違い⇒FLASHW_CAPTION
正しい⇒FLASH_TRAY
・下の『参考URL』もどうぞ。
参考URL:http://www.alato.ne.jp/kazu-/vb/tip13.htm
この回答への補足
丁寧に説明して頂きありがとうございます。
実際に試したところ、FlashWindowはうまく点滅しましたが、
FlashWindowExでは、点滅しませんでした
(FlashWindowExを実行しなかった時とはウィンドウの状態が違っている)。
念のため、リストを表示します。
FLASHWINFO pfwi;
HWND hwnd = CreateWindow( "STATIC", "お知らせ", WS_MINIMIZE | WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, (HWND)NULL, (HMENU)NULL,
hInstance, NULL);
pfwi.cbSize = sizeof( FLASHWINFO );
pfwi.hwnd = hwnd;
pfwi.dwFlags = FLASHW_TRAY;
pfwi.uCount = 10;
pfwi.dwTimeout = 500;
FlashWindowEx( &pfwi );
Sleep( 10000 );
DestroyWindow(hwnd);
No.1
- 回答日時:
★アドバイス
・ウインドウの点滅には FlashWindow()か、FlashWindowEx() を利用します。
FlashWindow() は1回だけの点滅ですが、FlashWindowEx() は複数回の点滅を
簡単に行えます。
・あと非表示の常駐プログラムなので、点滅用のウインドウを作成して最小化で表示を
行います。このとき、非アクティブで最小化する指定にします。そして点滅用の
ウインドウ・プロシージャの WM_CREATE で FlashWindowEx() 関数を実行するだけで
良いでしょう。
・下にサンプルのを載せておきます。
サンプル:
FLASHWINFO pfwi;
// 3秒間に3回の点滅(1秒に1回点滅×3回)
pfwi.cbSize = sizeof( FLASHWINFO );
pfwi.hWnd = hWnd; // ウインドウ・ハンドル
pfwi.uCount = 3; // 点滅回数
pfwi.dwTimeout = 500; // 点滅間隔(ms)
pfwi.dwFlags = FLASHW_CAPTION;
FlashWindowEx( &pfwi ); // 点滅
その他:
・点滅の終わる時間を予め SetTimer() で設定して WM_TIMER でウインドウを自動的に
閉じる仕組みをとれば、数秒間だけ点滅して自動的に消えるようにも出来ます。
・もしずっと点滅させたい場合はどのタイミングで点滅用の『タスクアイコン』を消すのかを
考えて下さい。
・以上。
参考URL:http://msdn.microsoft.com/library/ja/default.asp …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 windowsでタスクバーのアイコンをクリックするだけですぐアクティブウィンドウに切り替えられるよう 1 2023/06/11 20:42
- Windows 10 (緊急)windowsのタスクバーやアプリ?が反応しない 3 2023/03/28 05:03
- イヤホン・ヘッドホン・補聴器 ワイヤレスイヤホンについて詳しい方お願いします。 2 2022/05/11 09:08
- Mac OS 【MacOS】外付けHDDがUSB3.1バス上でのみアクセス出来なくなる 1 2022/10/29 10:27
- Windows 10 Google日本語入力について 3 2022/10/20 15:51
- Excel(エクセル) Excel マウスなし操作の質問 3 2022/06/04 13:39
- Excel(エクセル) Excelから複数のWordファイルを操作する方法について教えて頂きたい。 やりたいことは、複数のW 2 2022/07/26 20:11
- Chrome(クローム) googleアカウントのアイコンをローマ字または漢字で表示させたい 2 2023/05/06 22:25
- テレビ テレビの基本操作について。 3 2022/09/11 11:26
- デスクトップパソコン デスクトップの表示がおかしい 4 2022/06/20 22:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vbaから他のアプリを終了
-
VC++2005のMessageBox関数
-
WINDOWを最前面に出したい!!
-
WM_CTLCOLORDLG
-
他のアプリケーションの hDC を...
-
システム例外のメッセージを変...
-
他のウィンドウのボタンを自動...
-
点滅で知らせる方法
-
VB6でシャットダウン、ログオフ...
-
VB.netでFindWindowExやると・...
-
デスクトップ上のアイコンの位...
-
Excel VBA で外部アプリケーシ...
-
メッセージボックスの選択ボタ...
-
SetWindowText関数について
-
メッセージループについて
-
PeekMessage
-
VBAでコントロールのハンドルを...
-
CloseHandle()
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaから他のアプリを終了
-
他のウィンドウのボタンを自動...
-
メッセージボックスの選択ボタ...
-
msgboxの表示位置
-
VBAでコントロールのハンドルを...
-
メッセージハンドラ
-
SetWindowText関数について
-
WM_NCLBUTTONUPについて
-
VB.netでFindWindowExやると・...
-
デスクトップ上のアイコンの位...
-
点滅で知らせる方法
-
SendMessage で ESC など
-
チェックボックスのキーダウン...
-
キーボード・フックのアプリを...
-
マウスフックについて
-
DEVICECHANGE() の受け取り
-
CloseHandle()
-
システム例外のメッセージを変...
-
VB6でシャットダウン、ログオフ...
-
Excel VBA で外部アプリケーシ...
おすすめ情報