超初歩的な質問だとはおもいますがお願いいたします。
CClientDC c;
c.SetBkMode(TRANSPARENT);
c.TextOut(0,0,"HELLO");
↑これで「HELLO」という文字を表示しました。
1つボタンを用意し、そのクリックした時の処理記述で
表示した文字を消し(クリア)したいのですが
どのような方法があるのでしょうか?
※ダイアログは表示したままです。
あなたはそれをどの関数に書きましたか?
説明不足だったので追記にきましたM(__)M
ダイアログベースで作成しています。
HELLOという文字はボタン1の処理で表示しています。
ボタン2を押したらそれをクリアしたいのです。
つまり、ボタン1を押せば「HELLO」を表示し
ボタン2を押せば「HELLO」を消す
という簡単なものなのですが・・
いかんせんヘルプやネット、本で探してるのですが
どうゆうキーワードで調べたらいいかわからなくて。すいません
一番簡単なのは,Staticコントロールを用意しておいて表示させる方法。
どうしても自分で書きたいのであれば,
書き込んだ範囲を背景ブラシで塗りつぶす事で「消す」ことができます。
皆様、回答ありがとうございます。
調べて試したところ
CClientDC dc(this); // 描画用のデバイス コンテキスト
SendMessage(WM_ERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
をいれてやれば画面の文字は消えました。
んが!どうやらこれは画面全体をクリアしてるようなので
ボタンまで見えなくなってしまいました。
YuOさんのように背景ブラシで塗りつぶすのがいいのかなぁ
消去する前の問題として・・
ボタン1を押した後、ダイアログの上に他のウインドウを重ねてHELLOを一度隠してまた表示してみて下さい。
REEさんの言うことを試したら
表示してた文字が消えたりしました(汗)
このあといろいろ調べたら
消す方法がわかりました。
皆様、ありががとうございます。
どのように解決したのか、報告していただけるとうれしいのですが・・
ツイート | ![]() |