UserControl-derived
いくつかのサブコントロールを持つコントロールがあります(ここでは、3つのドッキングされたラベル)。UserControlの任意の場所をクリックすると反応するために、私override WndProc()
は
WM_PARENTNOTIFY / WM_LBUTTONCLICK
--これはMSDNで提案されており、うまく機能します。
ユーザーのマウスクリックに対する反応は、(モーダル)ポップアップダイアログを開くことです。ただし、これを実装しようとすると、奇妙な動作が表示されます。ダイアログが数回点滅し、Windowsのサウンドが発生することがあります。ダイアログを閉じた後、ユーザーはメインウィンドウ(UserControlを含む)をクリックしてフォーカスをリセットする必要があります。ちらつきや音が出ないこともありますが、メインフォームもフォーカスを失います。
これとは対照的に、UserControlの横にあるボタンもそのポップアップダイアログを開きます。ちらつきや音はなく、ポップアップを閉じると、メインウィンドウに自動的にフォーカスが戻ります。
UserControl / WndProc構造の何が問題になっていますか?
動作を説明するためのサンプルプロジェクト(VS2008)を含めています:( DropBox経由)