• ベストアンサー

MFCでinputbox

先ほどの図書館システムを質問したものですが、MFCには簡単にInputboxを出せる関数はあるのでしょうか?それともダイアログを小さくするとか...? 今考えてみたら、SDKで出来そうですよね。SDKのどの関数がVBでいうInputboxに相当するのでしょうか?また,その関数はどうやって呼べばいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • syousuke
  • ベストアンサー率61% (13/21)
回答No.2

関数は、xxxApp::InitInstance()内の記述方法ですよね? ログインダイアログをm_pMainWndにするのもなんですので LoginDlg login; int nResponse = login.DoModal(); if (nResponse == IDOK) { CMainDlg dlg; m_pMainWnd = &dlg; } でOKだと思います。

northcurlcurl
質問者

お礼

上記のコード通り自分のコードに書き込んでも上手く行かず、嘆いてばかりいたのですが、BreakPointを置きながら、プログラムの動きを追っていったら、Dlg.DoModal()を書き忘れてることに気づきました...。syousukeさん、アドバイスありがとうございました。

その他の回答 (1)

  • syousuke
  • ベストアンサー率61% (13/21)
回答No.1

VBのInputBoxは、Cでは簡単には行かないと思います。 MFCでは、おっしゃる通り、ダイアログエディタで作るしかないでしょう。 SDKだともっとめんどくさくて、リソースファイルを作ってやるか、CreateWindowを使って、やるかだとおもいます。 CreateWindow関数の方法では、最初にCreateWindowでダイアログ形式のウインドウを作って 次に戻り値のhWndを親にして、エディットボタンのクラスでCreateWindowを呼べばOKだと思います。

northcurlcurl
質問者

補足

さっそくの回答ありがとうございます。 結局MFCで新しいダイアログボックスを作ることにしたのですが、このInputBoxはログイン認証のためのもので、認証が成功すると(OKボタンが押されると)、メインのダイアログを動かすようにしたいのですが、どのように呼べばいいのでしょうか? LoginDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) { MainDlg Main_dlg; m_pMainWnd = &Main_dlg; } でよろしいのでしょうか...?

関連するQ&A