エディットボックスの背景色を変更するには? – プログラミング – Home

エディットボックスの背景色を変更するに...
 
通知
すべてクリア

エディットボックスの背景色を変更するには?


KENKEN
 KENKEN
(@KENKEN)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

みなさん こんにちは。

下記のようなサンプルがありまして
自分なりに改造してみたところ・・・

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 にて作成中です。


引用解決済
トピックタグ
KENKEN
 KENKEN
(@KENKEN)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

すみません。題名 間違えてしまいました。

間違いついでに、題名のとおりの質問をさせていただきます。

コマンドボタンを押すと、エディットボックスの背景色が
変わると言うようなプログラムを作りたいのですが
どのようにすればいいのか分かりません。

画面描画時に色を変更するとかのヒントはあったのですが・・・

すみませんが教えていただけないでしょうか?

(送信を押してから記事が削除できないのに気づいた バカな自分)


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 23年前
投稿: 761
 

>SetDlgItemText(IDC_EDIT1, *pd);
>↑これではうまくいかない。

ポインタを渡しましょう。

SetDlgItemText(IDC_EDIT1, (const char*)pd);
でどー?

背景色は WM_CTLCOLOR, OnCtlColor あたりを
helpで検索してみてください。


返信引用
KENKEN
 KENKEN
(@KENKEN)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

書くの忘れてましたが
>SetDlgItemText(IDC_EDIT1, (const char*)pd);
これも含めていろいろやったんですが、だめでした。
コンパイルはとおるのですが、表示は ・になっちゃいます。

ちゃんと pdにはアドレス、0x0d という値が
入っているんだけどなぁ。

結果、回りくどくなるけど

char ch[255];
wsprintf(ch, %02X, *pd);
SetDlgItemText(IDC_EDIT9, ch);

こんな風にして無理矢理解決しました。
アー情けない。でも、これが普通なのかな?

背景色の方は、ボタンのイベントのところに
OnCtlColor関数を書いてやればいいのでしょうか?
そうなると、引数である CDC と CWnd を
取る必要があるわけですね?

ちょっと試してみます。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 23年前
投稿: 761
 

>>SetDlgItemText(IDC_EDIT1, (const char*)pd);
>これも含めていろいろやったんですが、だめでした。
>コンパイルはとおるのですが、表示は ・になっちゃいます。
こういうものなのです。これは文法的にも正解だと思いますよ。

>ちゃんと pdにはアドレス、0x0d という値が
>入っているんだけどなぁ。
コントロールコードとか称しているもの、16進数でいう
0x20未満のコードは '.'と表示されます。多分。

>アー情けない。でも、これが普通なのかな?
Good. 普通っちゅーより、OKです。

>背景色の方は、ボタンのイベントのところに
>OnCtlColor関数を書いてやればいいのでしょうか?
親がダイアログの場合はダイアログに対して、WM_CTLCOLORを実装します。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました