- ベストアンサー
MFCでinputbox
先ほどの図書館システムを質問したものですが、MFCには簡単にInputboxを出せる関数はあるのでしょうか?それともダイアログを小さくするとか...? 今考えてみたら、SDKで出来そうですよね。SDKのどの関数がVBでいうInputboxに相当するのでしょうか?また,その関数はどうやって呼べばいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
関数は、xxxApp::InitInstance()内の記述方法ですよね? ログインダイアログをm_pMainWndにするのもなんですので LoginDlg login; int nResponse = login.DoModal(); if (nResponse == IDOK) { CMainDlg dlg; m_pMainWnd = &dlg; } でOKだと思います。
その他の回答 (1)
- syousuke
- ベストアンサー率61% (13/21)
VBのInputBoxは、Cでは簡単には行かないと思います。 MFCでは、おっしゃる通り、ダイアログエディタで作るしかないでしょう。 SDKだともっとめんどくさくて、リソースファイルを作ってやるか、CreateWindowを使って、やるかだとおもいます。 CreateWindow関数の方法では、最初にCreateWindowでダイアログ形式のウインドウを作って 次に戻り値のhWndを親にして、エディットボタンのクラスでCreateWindowを呼べばOKだと思います。
補足
さっそくの回答ありがとうございます。 結局MFCで新しいダイアログボックスを作ることにしたのですが、このInputBoxはログイン認証のためのもので、認証が成功すると(OKボタンが押されると)、メインのダイアログを動かすようにしたいのですが、どのように呼べばいいのでしょうか? LoginDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) { MainDlg Main_dlg; m_pMainWnd = &Main_dlg; } でよろしいのでしょうか...?
お礼
上記のコード通り自分のコードに書き込んでも上手く行かず、嘆いてばかりいたのですが、BreakPointを置きながら、プログラムの動きを追っていったら、Dlg.DoModal()を書き忘れてることに気づきました...。syousukeさん、アドバイスありがとうございました。