オーナー ウィンドウをクリックすると、標準の Windows ダイアログが点滅します。この効果は、ウィンドウのアクティブ化と非アクティブ化に似ています。
ただし、ダイアログにカスタム ウィンドウの境界線を実装する場合、いつウィンドウをフラッシュする必要があるかわかりません。Windows はダイアログをフラッシュしません。
これが私が試したことです:
所有者とダイアログの両方に送られるすべてのメッセージを見ましたが、ウィンドウを点滅させるためだけに存在するメッセージを見つけることができませんでした。
Spy++ をデフォルトの Windows ダイアログにフックしましたが、「フラッシュ」メッセージも見つかりませんでした。
WinUser.h を調べたところ、「フラッシュ」メッセージが見つかりませんでした。そのため、lParam と wParam が指定された 1 つ以上のメッセージの何らかの組み合わせであると想定しています。
誰かがこれを経験したことがありますか、それともおそらくこれを説明しているいくつかのページを教えてもらえますか? 私はこの問題に数か月間取り組んでいるので、どんなアイデアでも大歓迎です。
編集
コメントに応じて、現在使用しているコードは次のとおりです。
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == 0x0020)
{
if ((short)((long)lParam & 0xffff) == (-2))
{
short hiword = (short)((((long)lParam) >> 16) & 0xffff);
if (hiword == 0x0201 || hiword == 0x0204)
Flash(); // My function which simulates a window flash
}
}
return IntPtr.Zero;
}