ダイアログに表示した文字をクリアするには?

解決


みつえもん  2005-04-21 01:52:00  No: 57086

超初歩的な質問だとはおもいますがお願いいたします。

CClientDC c;
c.SetBkMode(TRANSPARENT);
c.TextOut(0,0,"HELLO");

↑これで「HELLO」という文字を表示しました。
1つボタンを用意し、そのクリックした時の処理記述で
表示した文字を消し(クリア)したいのですが
どのような方法があるのでしょうか?
※ダイアログは表示したままです。


REE  2005-04-21 01:54:57  No: 57087

あなたはそれをどの関数に書きましたか?


みつえもん  2005-04-21 02:12:55  No: 57088

説明不足だったので追記にきましたM(__)M

ダイアログベースで作成しています。
HELLOという文字はボタン1の処理で表示しています。
ボタン2を押したらそれをクリアしたいのです。

つまり、ボタン1を押せば「HELLO」を表示し
ボタン2を押せば「HELLO」を消す

という簡単なものなのですが・・
いかんせんヘルプやネット、本で探してるのですが
どうゆうキーワードで調べたらいいかわからなくて。すいません


YuO  2005-04-21 02:44:53  No: 57089

一番簡単なのは,Staticコントロールを用意しておいて表示させる方法。

どうしても自分で書きたいのであれば,
書き込んだ範囲を背景ブラシで塗りつぶす事で「消す」ことができます。


みつえもん  2005-04-21 03:09:00  No: 57090

皆様、回答ありがとうございます。

調べて試したところ
CClientDC dc(this); // 描画用のデバイス コンテキスト
SendMessage(WM_ERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
をいれてやれば画面の文字は消えました。

んが!どうやらこれは画面全体をクリアしてるようなので
ボタンまで見えなくなってしまいました。

YuOさんのように背景ブラシで塗りつぶすのがいいのかなぁ


REE  2005-04-21 04:14:46  No: 57091

消去する前の問題として・・
ボタン1を押した後、ダイアログの上に他のウインドウを重ねてHELLOを一度隠してまた表示してみて下さい。


みつえもん  2005-04-22 05:53:34  No: 57092

REEさんの言うことを試したら
表示してた文字が消えたりしました(汗)
このあといろいろ調べたら
消す方法がわかりました。

皆様、ありががとうございます。


REE  2005-04-22 18:01:11  No: 57093

どのように解決したのか、報告していただけるとうれしいのですが・・


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加