- PR -

MFC MDIで子ウィンドウの作り方

投稿者投稿内容
SumI
会議室デビュー日: 2006/01/23
投稿数: 11
投稿日時: 2006-02-07 15:02
MFC MDIでウィザードからアプリケーション作成時
標準ではメニューの新規作成をクリックすることで新しい子ウィンドウが作成されますが

これを、メニュー->管理->サーバー選択と選び
ダイアログを表示した後
ダイアログに貼り付けたコンボボックスからサーバー名を選び
OKボタンを押したあと子ウィンドウを作成するにはどうすればいいでしょうか


よろしくお願いします。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-02-07 15:44
どこまでできて、具体的にはどこが不明ですか?
_________________
囚人のジレンマな日々
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-02-07 15:58
CXXXDoc::OnNewDocumentあたりを調べてみてください。
ドキュメントが初期化される時にそこにくるはずです。
(もちろん、いきなり立ち上げるとそこにいきます。)

というか、MFCのスケルトンに頼りすぎです。
新規作成を押したときにドコに処理がくるのか、適当にメソッド名にあたりをつけて
ブレイクポイントを設置して、実行してみたりしてみましたか?
そういうことをやらないと一向に上達しません。

[ メッセージ編集済み 編集者: Blue 編集日時 2006-02-07 16:00 ]
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-02-07 16:02
あ、、勘違いした。
> これを、メニュー->管理->サーバー選択と選び
だから、ちゃうですな。

新規作成でダイアログを表示させるのかと思いました。

ま、結構ヒントみたいなこといっているからいいかな。。。

[ メッセージ編集済み 編集者: Blue 編集日時 2006-02-07 16:06 ]
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2006-02-07 16:40
こんにちは。

引用:

SumIさんの書き込み (2006-02-07 15:02) より:
OKボタンを押したあと子ウィンドウを作成するにはどうすればいいでしょうか



そのまま単純に質問に回答しますと
「ID_FILE_NEWコマンドを発行すればいいです」
ということになりますが、
この答えでは、きっとダメなんでしょうね(~_~;)
SumI
会議室デビュー日: 2006/01/23
投稿数: 11
投稿日時: 2006-02-07 17:26
googleにてMDI 子ウィンドウ作成 のキーワードで検索して
下記サイトを参考にしてたんですが、どうもSDIだったみたいですね(URLまで見てませんでした。)
http://homepage2.nifty.com/DSS/VCPP/MFC/SDI/SDICreateChild.htm

ON_COMMNAND(ID_FILE_NEW, CWinApp:nFileNew)
あたりを突っ込んで調べたほうが良いんでしょうか?

MFC/MDIは初めて触るのでどこから理解したら良いのやらわかってません。

※諸兄の質問に回答できてなくてすみません、諸事情により2日ほどスレッド見れないかも知れません
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-02-07 17:35
とりあえず、MDIでの
> 「ID_FILE_NEWコマンドを発行すればいいです」

フレームウィンドウクラスを取得して、
フレームウィンドウクラス->SendMessage( WM_COMMAND, MAKEWPARAM( ID_FILE_NEW, 0 ) );
とすればできます。
# AfxGetApp()->m_pDocManager->OnFileNew();
# では邪道なんでしょうかね、、、

> MFC/MDIは初めて触るのでどこから理解したら良いのやらわかってません。
結局 SDI なのか MDI なのかどっちなのでしょうか?
SDIであるときに、いきなり起動したときにあるドキュメントはどのような扱いなんでしょうか?
(本来ならば、起動直後にサーバー選択ダイアログを出すべきなのでは?)

あまり焦らずに、VC系の入門書を購入して勉強なされたほうが今後のためですよ。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2006-02-07 17:54
こんばんは。
引用:

SumIさんの書き込み (2006-02-07 17:26) より:
ON_COMMNAND(ID_FILE_NEW, CWinApp::onFileNew)
あたりを突っ込んで調べたほうが良いんでしょうか?


そうですね。CWinApp::OnFileNew()あたりからMFCのソースコードをトレースしてみるといいと思います。
CDocManager::OnFileNew()が呼び出されるのですが、そこの実装が参考になるでしょう。
#つまり適切なCDocTemplateクラスのOpenDocumentFile(NULL)を呼び出せばよいことが分かるはずです。

引用:

MFC/MDIは初めて触るのでどこから理解したら良いのやらわかってません。


そうだろうなぁと思いました。
なんとなく右も左も分からないまま、いきなり開発されているように見えました(~_~;)
もうすこし、MDI(Multiple Document Interface)やMFCのDocment/Viewアーキテクチャーなどいろいろ勉強して
フレームワークを理解したうえで開発されるほうがよいでしょうね。

MFCは強力なフレームワーク/ライブラリですが、決してお手軽なものではないですから(~_~;)

MFCを使いこなすには、表面的な知識だけではなく、
Insideな部分(つまりMFCソースコード)も理解しておく必要があると思います。
「ソースを使え、ルーク」です。

スキルアップ/キャリアアップ(JOB@IT)