• ベストアンサー

ウィンドウへの文字の出力について

ダイアログのOKボタンを押すとウィンドウが生成されるようにしました。 この時、ダイアログのエディットボックスに入力した文字をウィンドウのクライアント領域に書き出したいのですが、どのようにすれば良いのでしょうか? ヒントなり参考サイトなりをお教えください。 お願いします。

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

  • ベストアンサー
  • darksky
  • ベストアンサー率66% (38/57)
回答No.2

ダイアログベースということなので、ダイアログからダイアログを開く方法で説明します。 まずは、メインダイアログとしてCMainDlgを例にしますが、かなり割愛します。 このダイアログには、Editが貼り付けられているとします。Editコントロールに割り当てたIDをIDC_EDIT_INPUTだと仮定します。 DDXとかのデータ変換を使う方法もありますが、ここでは単にデータを取得します。 // // OKボタンが押された時の処理 // void CMainDlg::OnOK() { // データの取得 CString strText; GetDlgItemText(IDC_EDIT_INPUT, strText); CSubDlg dlg2; dlg2.m_strText = strText; dlg2.DoModal(); } class CSubDlg : pbulic CDialog { public: CString m_strText; // 親から渡される文字列を格納する変数 ・ ・ ・ ・ ・ }; あとは、CSubDlgのOnPaintでテキストを描画します。 void CSubDlg::OnPaint() { // テキストをクライアント領域の中央に描画 CRect rect; GetClientRect(rect); CPaintDC dc(this); dc.TextOut(m_strText, rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); } こんな感じです。

VitaminBB
質問者

お礼

darkskyさん ようやく出来ました。 本当に色々ありがとうございました。

その他の回答 (1)

  • darksky
  • ベストアンサー率66% (38/57)
回答No.1

MFCを使っているのでしょうか? 考え方は同じですが、MFCを例にします。 1.OKボタンがクリックされた時にエディットボックスに入力された文字列を取得する。 2.新しく生成するウィンドウのクラスのメンバ変数に文字列を格納する。 3.ウィンドウを生成する。 4.生成されたウィンドウはその文字列をOnPaintでクライアント領域に描画する。 または、コントロールなどを貼り付けて、文字列をSetWindowTextなどでセットする。

VitaminBB
質問者

お礼

いつもアドバイスありがとうございます。 環境:WIN98 VC++6.0 MFC ダイアログベース >1.OKボタンがクリックされた時にエディットボックスに入力された文字列を取得する。 エディットボックスにメンバ変数m_editを設定し取得できました。 >2.新しく生成するウィンドウのクラスのメンバ変数に文字列を格納する。 この方法が分かりません。 >3.ウィンドウを生成する。 問題ありません。 >4.生成されたウィンドウはその文字列をOnPaintでクライアント領域に描画する。 dc.DrawText(m_edit,・・・);ここで、m_editが定義されていないと言われてしまいます。 (dlg.m_editに変えてもダメでした。SDIベースでダイアログを後から表示する場合はこれで出来ます。) 結局、派生ウィンドウクラスからダイアログのエディットボックスのメンバ変数m_editの値を取得する方法が分かりません。 よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう