2009-03-30 36 views
0

Windows CE上で動作する.NET Compact Framework 3.5をターゲットとするC#で書かれたアプリケーションがあります。ユーザーが最初にダイアログを閉じることなくオーナーウィンドウと対話しようとすると、私はモーダルダイアログでカスタムビジュアルキューを提供したいと思います。モーダルダイアログの外でトラップマウスがクリックされる

モーダルダイアログで、所有者ウィンドウでマウスクリックの通知を受け取ることはできますか?オーナーウィンドウはフルスクリーンで実行されているので、一般的にモーダルダイアログの外にクリックをトラップするだけで十分です。

+0

ここに示すようにWndPrcメソッドをオーバーライドしてください。[こちら](http://stackoverflow.com/a/32480034/2362553) –

答えて

3

これはモダリティの仕組みです。ダイアログがモーダルに表示されると(CEまたはデスクトップWindows)、そのウィンドウには独自の内部メッセージポンプが割り当てられます。つまり、ウィンドウの外にマウスのようなメッセージが表示されたら、ポンプはそれを破棄します。ポンプがそのメッセージを別のポンプに送るための方法はありません(両方のポンプを自分で噛み締めることなく、可能ですが、複雑で畳み込まれており、スケーラブルで維持可能ではありません)。

0

おそらくControl.Captureプロパティを使用できます。

+0

私はこの作業を行うことができません。 ShowDialogメソッドを呼び出す前に、フォームのCaptureプロパティをtrueに設定しましたが、ダイアログの外をクリックするとClickイベントが表示されません。 –

+0

キャプチャを設定するにはフォームを表示する必要がありますか? – dommer

+0

私は、キャプチャプロパティを設定する前にフォームが表示されていることを確認しようとしましたが、まだ運がありません。 Windows CEの奇抜なことかもしれない... –

関連する問題