- 締切済み
ダイアログの呼び元ウィンドウを操作するには?
ダイアログの呼び元ウィンドウを操作するには? やりたいことは以下の通りです。 (1) 親ウィンドウからダイアログを起動する (2) ダイアログ上のあるボタンを押下したときに一旦ダイアログを非表示にする (ボタン押下以外はモーダルで) (3) 親ウィンドウのLButtonUpでクリックした座標をダイアログに返し、 ダイアログを再表示する 現在、モーダルでダイアログを作っていますが、SW_HIDEでダイアログを 起動したあと、親ウィンドウにフォーカスがあたりません。 なのでボタンダウンのイベントが取れない状態です。 やはりモードレスでダイアログを作らないといけないでしょうか? モードレスダイアログがいまいち上手く作れません・・・
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- magicalpass
- ベストアンサー率58% (378/648)
回答No.2
どちらがスマートかといえば、モードレスの方でしょう。 親ウインドウの操作を禁止したい間は ・親ウインドウ上のコントロールをすべてDisableにする。 ・必要以外のイベントはスルーする。 (イベントハンドラで何も処理を行わない) としておけば良いと思います。 モードレスダイアログから親ウインドウに指示を出す時はユーザー定義のメッセージ番号を作ってメッセージ送信で行うのがベターでしょうか。
- magicalpass
- ベストアンサー率58% (378/648)
回答No.1
モードレスダイアログの起動中は起動元の親ウインドウには制御が戻りません。ダイアログを不可視にしただけでは制御が戻らないのだから、以降の処理が動くわけはありません。 どうしてもモーダルダイアログを使いたいのであれば、いったん終了して親ウインドウに制御を返してからLButtonUp後に再起動するしかないでしょう。
補足
モードレスで作った場合は、ボタン押下時以外のときは親ウィンドウを操作できないように制御する必要がありますよね。 モーダルで一旦終了して再起動か、モードレスで親ウィンドウの制御か、どちらがスマートなやり方なのでしょうか?