起動時、メインウインドウの上にダイアログを出したい – プログラミング – Home

起動時、メインウインドウの上にダイアロ...
 
通知
すべてクリア

[解決済] 起動時、メインウインドウの上にダイアログを出したい


kyu
 kyu
(@kyu)
ゲスト
結合: 22年前
投稿: 27
Topic starter  

SDIアプリケーションの起動時に、モーダルダイアログを出したいです。

CFormView派生のクラスのOnInitialUpdateで、DoModalしたら
ダイアログだけが出て、OK or Cancelの後、メインウインドウが
表示されてしまいました。

起動時、メインウインドウの上に表示されるような形で出したいんですけど、
どこでDoModalしたらいいのかわかりません。

流れとしては
アプリ起動

ダイアログ出る

OK or Cancelの結果によってCFormViewの表示を替える

どなたかわかりますか?

winxp vc6 MFC


引用未解決
トピックタグ
kuo
 kuo
(@kuo)
ゲスト
結合: 22年前
投稿: 1
 

C***App::InitInstance()の最後のあたり

// メイン ウィンドウが初期化されたので、表示と更新を行います。
から
return TRUE;
までの間


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

VSWAP32 参考にしてみては?
ありかは、過去ログ捜すと出てくるよ


返信引用
kyu
 kyu
(@kyu)
ゲスト
結合: 22年前
投稿: 27
Topic starter  

一応解決しました。
CView系派生クラスでOnCreateをオーバーライド。
OnCreateは表示前に呼ばれるわけなので、OnCreateで、
俺定義メッセージを自分自身にPostMessageする。
PostされたMessageを、自分自身の俺定義メッセージハンドラで受け取り、DoModal。
これでOnCreateが終了した後になるのでうまい具合に
ダイアログがでました。

> C***App::InitInstance()の最後のあたり

でも、なりました。どうもでした。

> VSWAP32 参考にしてみては?

どうもでした。

ちなみに、CxxAppで、そういう動作ルーチンを入れるのは
セオリーなんですか?VSWAP32でもなんかやってみるたいでしたけど。
doc/view的っていえるんでしょうか?


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

解決つけてるのに質問が続いているような。(^^;

doc/view構造と起動時のダイアログ表示とにどういう関連があるのか分かりませんが、
doc/viewは、表示対象のデータを管理する部分と表示する部分の関係を分けることで
docとviewの組み合わせに自由度を持たせる事が目的なんだと思うので
起動時のダイアログ表示とは分けて考えてもいいと思います。
起動時のダイアログを特定のviewとセットにしたいのであれば、
kyuさんのような考え方もあるでしょうけれど。

起動時のダイアログ表示の場合、キャンセルされたときに表示しないで終了したい
場合もあるので私もC***App::InitInstanceに入れますね。
キャンセルされたときは、ウインドウの生成をしないで終了させてしまいます。


返信引用
kyu
 kyu
(@kyu)
ゲスト
結合: 22年前
投稿: 27
Topic starter  

>起動時のダイアログ表示とは分けて考えてもいいと思います。
>起動時のダイアログを特定のviewとセットにしたいのであれば、

なるほど。

イメージ的には、

・起動時のダイアログでキャンセルのときは、何も無いメインウインドウのみ。
・メニューで、またダイアログ出す。
・ダイアログのOKの結果によってviewの(中のタブ)内容が変わる。

だったです。
とりあえず、やり方的にはズレてなさそうなのでよかったです。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました