メインウインドウからダイアローグを生成すると、ダイアローグを閉じるまでメインウ
インドウは有効になりませんが、これをダイアローグが開いている間もメインウインド
ウを有効にすることはできないでしょうか?
よろしくお願いいたします。
モードレスで生成すればいい
ちょっと補足。
モードレスダイアログで調べてみると進展があると思います。
但し、モーダルダイアログと違って自前で色々考えて管理しないと
うまく行かないのでそれぞれの処理の意味を一つ一つ確認しながら
進めていかれる事をお勧めします。
ちなみに「ダイアローグ」は「ダイアログ」では?
>ちなみに「ダイアローグ」は「ダイアログ」では?
そのへんはどっちでも正しいが、ダイアログのほうが良く使われているってだけだとお
もうけど。サーバとサーバーのような。
と思ったらアメリカ英語とイギリス英語という関係みたいです。
辞書引くと、アメリカ英語のほうがDialogで
イギリス英語のほうがDialogueとなっていました。
ということはダイアログのほうが正しそうですね。
多分アメリカ英語なので。
しかしプログラミングさえも綴りが違うなど面倒ですね。
おまけ。"で囲むのがアメリカで''で囲むのがイギリスらしい。
質問の方はモードレスダイアログで良いと私も思います。
>ちなみに「ダイアローグ」は「ダイアログ」では?
どっちでもあってる
gooの発音は「ダイアローグ」かな
http://dictionary.goo.ne.jp/search.php?id=exej0096510-00000-00000-
00000&kind=ej&mode=5
>モードレスで生成すればいい
そうですね
講座的サイトを見れば出ていると思います
生成することや処理をダイアログ内で終わらせる分には
それほどむずかしくないとおもいます
メイン→ダイアログやダイアログ→メインの
やりとりがちょっと難しかったです
これにはポインタをクラスの型でキャスティングする場合と
thisポインタを使って共通的にやる方法があるようです
共通的なやりかたは覚えやすく応用もしやすいので
いまのともっぱらこれ使っています
(参考例:林晴比古のVC++シニア編)
>>ちなみに「ダイアローグ」は「ダイアログ」では?
>そのへんはどっちでも正しいが、ダイアログのほうが良く使われているってだけだとお
>もうけど。サーバとサーバーのような。
そうですね
英語の発音をカタカナで表現するのは無理な部分があると言うよりは
人の好みや感覚によっていろいろ分かれる場合もあると思います
ダイア か ダイヤ か
ロ か ラ か(英式 か 米式 か)
長音 か 短音 か
などあるけど本筋では問題ないかも
> メイン→ダイアログやダイアログ→メインの
> やりとりがちょっと難しかったです
大量のデータの受け渡しが必要で無いなら
ユーザー定義のウインドウメッセージでやり取りするようにすると
ウインドウ間の結合度が下がるので色々面白い事ができますよ。
SDIやMDIで行う時はCFrameWndの派生クラスで全てのメッセージを受けて
必要に応じてメッセージのディスパッチを行うようにしてました。
この方法だと送出先は、AfxGetMainWnd()で得られたポインタを使って
PostMessageをするだけで済むので各ダイアログは送出先を意識しないで
済みます。
CFrameWndの派生クラスは受け取ったメッセージの種類やパラメータから
判断してディスパッチ先のウインドウを特定してメッセージを配信します。
一度仕組みを作ってしまうと応用が利くので試してみるのもいいかと思います。
このつくりの場合、全てのダイアログのポインタはCFrameWndの派生クラスで
管理しています。ウインドウの表示もCFrameWndの派生クラスに依頼し、
非表示や破棄もCFrameWndの派生クラスに依頼する形にしていました。
> メイン→ダイアログやダイアログ→メインの
> やりとりがちょっと難しかったです
いっそうのこと、データ用のクラスを作って、ダイアログとメインウインドウと
共有にすれば、大量のデータも扱えるようになると思います。
データーの受け渡しは、皆さんの意見通り「PostMessage」等を使えばいいと
思います。
モードレスモードで解決できました。ありがとうございます。