ダイアログボックス内にあるテキストボックスの文字を変更したいのですが、
実行しようとしているプログラムは、
指定したPCにPingを発行し、その実行結果をテキストボックスに表示したいのですが、
ダイアログボックスの更新ではなくて、テキストボックスだけを更新する方法はどうすればよい
のでしょうか??
ダイアログボックスの更新というのがよくわかりませんが、
単にテキストボックスに文字列を設定したいなら、CWnd::SetWindowText()が使えます。
ところでPingの実行結果は取得できてるんでしょうか?
これをテキストボックスに表示する方法がわからないということ…?
実行結果は取得できています。
文字を設定したあとに表示までしたいのです。
対象のアドレスを入力すると、同一のダイアログボックス内にある、
テキストボックスに”しばらくお待ちください”と表示されて、
実行結果を取得すると、
”OK”or”NG”と表示するプログラムを考えています。
>文字を設定したあとに表示までしたいのです。
表示の部分だけでしたら、Sugerさんも仰っている
CWnd::SetWindowText()はどうですか?
テキストボックスへのアクセス方法がわからないのでしょうか?
そうであるなら、classwizardでテキストボックスにメンバ変数
を割り当てるか、ダイアログクラス内で GetDlgItem()を使用す
るとよいでしょう。あとは sugarさんのおっしゃるとおりです。
テキストボックスにメンバ変数(m_kekka1)として追加し、
プログラムに
m_kekka1.SetWindowText(通信OK);
といった感じで、書いてみたのですが、
'SetWindowTextA' : 'CString' のメンバではありません。
とコンパイルエラーが出てしまいます。
メンバ変数の型は何に指定したらいいのでしょうか??
それとも、なにか足らない部分があるのでしょうか??
エディットボックスをCStringのメンバ変数と
結び付けてるようなんで
m_kekka1 = 通信OK;
UpdateData(FALSE);
でできませんか?
これでだめならWanderer さんが
おっしゃってるようにしてください。
ありがとうございます。
FAYさんの方法でうまく動きました。
新年早々、たくさんのアドバイスあ、ほんとうにありがとうございます。
これからも、いろいろ質問することがあると思うので
よろしくおねがいします。
> 'SetWindowTextA' : 'CString' のメンバではありません。
> とコンパイルエラーが出てしまいます。
>
という件は解決していないと思うので、一応。
SetWindowText()はCWndクラスのメンバ関数だからです。
変数の追加で、エディットボックスに対してCString型を選んだようですが、
CEditを選べばよかったんです。
CEditはCWndから派生したクラスなので、CWnd::SetWindowText()を使うことができます。
なるほど、参考になります。
ありがとうございます。
ちなみにエディットボックスに値を入力させたくないので、
”無効”にチェックを入れると、
表示の方法と、文字の色が変わりますよね。
あれは、仕方ないのですか??
できれば、色はそのままにしたいのですが、、、。
こんにちわ
「無効」チェックボックスをチェックするとそのコントロールの入力を受け付けない状態になっ
てしまいます。プログラムが別処理中で入力してほしくないときに設定したりします。
したがって、しんたさんが期待する動作になりません。
こういうときは、プロパティ>スタイルにある「読み取り専用」をチェックします。
どちらにしても色が変わりますが、色を変えずに・・・って方法もあると思いますが手間がかか
ると思います。
もしくは単に文字列を表示するだけであれば、スタティックコントロールを使うという手もある
と思います。
ありがとうございます。
確かに”読取専用”にしたほうがいいです。
しかし、アイビーム(マウスのポインタでI←こんなやつ)
すら出させたくないのですが、、、。
スタティックにするしかないのですか??
そういう用件であれば、スタティックコントロールが手っ取り早いですね。
読取専用は確かに表示オンリーになりますが、
表示テキストをコピーすることができるので、
マウスポインタがIビームになるのでしょう。
アドバイスありがとうございます。
スタティックコントロールの文字は、
キャプションに書き込みますよね。
それの変更は可能なのでしょうか??
いくつか上の自分の発言にある、”しばらくお待ちください”と”OK”or”NG”
の部分に関して、この機能を実現しようとしているので、文字の変換は必須なのです。。。