みなさん こんにちは。
下記のようなサンプルがありまして
自分なりに改造してみたところ・・・
char buf[1600];
中略
unsigned char *pd;
CString tmp;
中略
pd =(unsigned char *)buf;
tmp.Format(%02X, *pd);
↑これではうまくいく。(サンプル通り)
SetDlgItemText(IDC_EDIT1, *pd);
↑これではうまくいかない。
SetDlgItemTextA' : 2 番目の引数を
'unsigned char' から 'const char *'
に変換できません。
と言ったエラーが出てしまいます。
おそらく、SetDlgItemTextで2桁だけ表示する
と言うような指定がしてないからだと思うのですが
どうでしょう?間違いであればご指摘お願いします。
また、エディットボックスに表示させるには
どうすれば良いのでしょうか?
VC++ 6.0 MFC、win2000 にて作成中です。
すみません。題名 間違えてしまいました。
間違いついでに、題名のとおりの質問をさせていただきます。
コマンドボタンを押すと、エディットボックスの背景色が
変わると言うようなプログラムを作りたいのですが
どのようにすればいいのか分かりません。
画面描画時に色を変更するとかのヒントはあったのですが・・・
すみませんが教えていただけないでしょうか?
(送信を押してから記事が削除できないのに気づいた バカな自分)
>SetDlgItemText(IDC_EDIT1, *pd);
>↑これではうまくいかない。
ポインタを渡しましょう。
SetDlgItemText(IDC_EDIT1, (const char*)pd);
でどー?
背景色は WM_CTLCOLOR, OnCtlColor あたりを
helpで検索してみてください。
書くの忘れてましたが
>SetDlgItemText(IDC_EDIT1, (const char*)pd);
これも含めていろいろやったんですが、だめでした。
コンパイルはとおるのですが、表示は ・になっちゃいます。
ちゃんと pdにはアドレス、0x0d という値が
入っているんだけどなぁ。
結果、回りくどくなるけど
char ch[255];
wsprintf(ch, %02X, *pd);
SetDlgItemText(IDC_EDIT9, ch);
こんな風にして無理矢理解決しました。
アー情けない。でも、これが普通なのかな?
背景色の方は、ボタンのイベントのところに
OnCtlColor関数を書いてやればいいのでしょうか?
そうなると、引数である CDC と CWnd を
取る必要があるわけですね?
ちょっと試してみます。
>>SetDlgItemText(IDC_EDIT1, (const char*)pd);
>これも含めていろいろやったんですが、だめでした。
>コンパイルはとおるのですが、表示は ・になっちゃいます。
こういうものなのです。これは文法的にも正解だと思いますよ。
>ちゃんと pdにはアドレス、0x0d という値が
>入っているんだけどなぁ。
コントロールコードとか称しているもの、16進数でいう
0x20未満のコードは '.'と表示されます。多分。
>アー情けない。でも、これが普通なのかな?
Good. 普通っちゅーより、OKです。
>背景色の方は、ボタンのイベントのところに
>OnCtlColor関数を書いてやればいいのでしょうか?
親がダイアログの場合はダイアログに対して、WM_CTLCOLORを実装します。