• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エディットボックスの表示方法について)

エディットボックスの表示方法について

このQ&Aのポイント
  • C++の初心者です。エディットボックスにデータを入力し、表示させる方法について悩んでいます。
  • 実行時に入力画面が立ち上がり、デフォルトで表示される値を設定したいです。
  • 入力した値に応じて表示を切り替えたいのですが、うまくできません。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>以前にご教示頂いた下記のコーディングを前提に文字を表示させる件です。 全然前提になってないんですが。 >CClientDC myDC(this); >CmyDialog myDLG; これはどこから出てきたのですか? この2行の意味は理解されてますか? YZ80さんの処理はどこのハンドラに記述されているのですか? ウィンドウを持つアプリケーションはイベントドリブンです。 いきなり処理だけ抜き出されてもいつどこで行われる 処理なのかがわかりません。 私のサンプルは、 void CMyDialog::OnButton1Click() というように、どこのイベントで動く処理かというのが はっきりわかりますよね? 前提にして処理を書かれたというのでしたら、UpdateData()は どこに行ってしまったんですか? >また、通信に関してはプログラムを実行時にボード内の >CPU内をデバッグし、テーブルのアドレスのデータを >書き替えて"1"のデータなら"青"・"2"なら"黄"という >イメージです。そこで、プログラムが立上った時に >テーブルのデータの状態を見て、現状が"1"の時に"青"・ >"2"なら"黄"・"3"なら"赤"とエディットボックスに >表示させるというイメージです。 そのボードのドライバがあると思うので、ドライバの 使い方を調べてください。 ドライバまでYZ80さんが書かれるというのであれば、 ボードの仕様書とにらめっこしてがんばってください。 大前提なのですが、このアプリケーションは、AppWizardで ・SDI ・MDI ・ダイアログベース のどれを選択して作られているのでしょう? >読み出し専用にしたいのすが、m_text3.SetReadOnly(TRUE); C++は理解されていますか? クラスとメソッドの関係がわかっていれば、そんな質問の内容には ならないはずですが。 SetReadOnlyはCEditのメンバ関数です。m_text3がCStringなら 呼べるわけがありません。 >m_text3(テーブルのデータをオペレータが編集する。 >入力値は"1"or"2"or"3"とします。)、 おまけですけど、普通これならラジオボタンにしません? オペレーションのミスを防ぐという点でもエディットボックスを 使うメリットが無いと思うのですが。

YZ80
質問者

お礼

いろいろとありがとうございました。Cもやった事もありませんでしたので、いきなりC++で教科書開いて2週間だったもので、ご教示頂く事も正直、理解できていません。あまりプログラミングは向いていない方なので、本当に自信はありませんが、頼る方もいないのでこちらでお世話になろうと思いましたが、今後は少し自分で勉強をしてもう少し、質問らしい質問ができるようになったら、またお世話になります。ありがとうございました。

YZ80
質問者

補足

taka tetsuさんどうもありがとうございました。ようやく動作するようになってまいりました。CEditのメンバ関数を理解してませんでした。本当にありがとうございます。今後ともよろしくお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>ファイルのオープンの仕方と http://www.google.co.jp/search?num=100&hl=ja&ie=UTF-8&oe=UTF-8&q=MFC+CFile+%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB+%E5%9F%BA%E6%9C%AC&lr= ファイルの読み書きは基本ですので自分で探してみましょうね。 >下記のコーディングを添削して頂けませんでしょうか? >CClientDC myDC(this); >CmyDialog myDLG; 何をしたいのでしょうか? どのように文字を表示させたいのでしょうか? TextOut()等で自分でクライアント領域に描画したいのですか? エディットボックス等のコントロールに出力したいのですか? 説明不足で添削できません。 あと、次回のファイルオープンというのはいつを指すのですか? アプリが動いている間に次回のファイルオープンが行われるのですか?次のアプリの起動時のことですか? 正しく説明をお願いします。 >また、最終的は既存ファイルはイーサ経由でボードにある固定アドレスの値を編集したいので、 >合わせて通信方法についてもご教示頂ければ幸甚です。 固定アドレス?etherということはIPアドレスって意味ですか?ボードにあるって何を意味しているのですか?正しく説明してください。 それがわからないの通信方法など説明できません。

YZ80
質問者

補足

説明不足で申し訳ありません。 以前にご教示頂いた下記のコーディングを前提に文字を表示させる件です。 void CMyDialog::OnButton1Click() { UpdateData(TRUE); if( m_strEdit1 == _T("ON") ) { m_strEdit2 = _T("1"); } else if( m_strEdit1 == _T("OFF") ) { m_strEdit2 = _T("2"); } UpdateData(FALSE); } みたいにすれば、平気かな? "ON"を"青"・"OFF"を"赤"というような感じです。 また、通信に関してはプログラムを実行時にボード内のCPU内をデバッグし、テーブルのアドレスのデータを書き替えて"1"のデータなら"青"・"2"なら"黄"というイメージです。そこで、プログラムが立上った時にテーブルのデータの状態を見て、現状が"1"の時に"青"・"2"なら"黄"・"3"なら"赤"とエディットボックスに表示させるというイメージです。エディットボックスは現在、m_text1(テーブルの状態を表示"1"。読み出し専用)、m_text2(m_text1の"1"を判定し、"青"を表示させる。)、m_text3(テーブルのデータをオペレータが編集する。入力値は"1"or"2"or"3"とします。)、m_text4(Button1を押下後、m_text3でオペレータが編集したデータを"1"→"青"と表示させる。)、Button1(オペレータがm_text3でデータを編集し、確定する時に押下する。この時にm_text3は読み出し専用にしたいのすが、m_text3.SetReadOnly(TRUE);と書いて見ましたが、コンパイルエラーになってしまいます。)、あとはキャンセルボタンと編集したデータをボードに送信するOKボタンで構成を考えています。説明が下手で申し訳ありません。よろしくお願い致します。

すると、全ての回答が全文表示されます。
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>(例えばm_text1'やm_text1''をマウスクリック時) って、いくら例でもマウスクリックじゃ文字は変わりませんよね。 MFCでよろしいですか? エディットボックスのOnChangeのイベントハンドラを 作成します。(メッセージはEN_CHANGEです) ダイアログの作成時、エディットボックスをダブルクリックしてハンドラを作成してください。 その中でm_text2の値を変更してUpdateDataを呼び出してあげてください。

YZ80
質問者

補足

ご教示ありがとうございます。 考え方を改めたいと思います。 既存フォルダ内のファイル(c:\tmp\data.txt)を開いて、"1"だったら、"青"をm_text2に出力し、次回ファイルをオープンした時には、"2"もしくは"3"の時に"黄"・"赤"をm_text2に出力するようにしたいと思います。ファイルのオープンの仕方と下記のコーディングを添削して頂けませんでしょうか? CClientDC myDC(this); CmyDialog myDLG; //不明なところ c:\tmp\data.txtの中に"1"があれば"青"をm_text2に出力 if( myDLG.m_text1 == _T("1") ) { myDLG.m_text2 = _T("青"); } else if( myDLG.m_text1 == _T("2") ) { myDLG.m_text2 = _T("黄"); } else if( myDLG.m_text1 == _T("3") ) { myDLG.m_text2 = _T("赤"); } また、最終的は既存ファイルはイーサ経由でボードにある固定アドレスの値を編集したいので、合わせて通信方法についてもご教示頂ければ幸甚です。 よろしくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A