DrawTextでの描画
お世話になります。
現在開発中のアプリケーションにて行き詰ってしまった箇所が
あったためご質問させていただきました。
Visual Studio2005にてダイアログベースのアプリケーションを作成しており、オリジナルのCStatic派生のクラスCSampleStaticクラスを作成します。
このCSampleStaticクラスはメインダイアログでのサブクラスにした際に
PreSubclassWindow()
ないでタイマーイベントを発生させます。タイマーイベントの内容は1秒ごとにタイマーを呼び、ランダムの値をそのCStaticの値に代入し、ダイアログ上に表示させる動作をします。
その際の処理のプログラムは以下のように作成しています
CString str;//メンバー変数
//メインダイアログにてサブクラス化した際に呼ばれる
CSampleStatic::PreSubclassWindow()
{
SetTimer(1,1000,NULL);//1秒毎に
}
CSampleStatic::OnTimer(UINT_PTR nIDEvent)
{
str.Format(_T("%d"),rand()%200); //1~199の乱数をstrに代入
Invalidate(); //OnPaint()を呼ぶ
CStatic::OnTimer(nIDEvent);
}
CSampleStatic::OnPaint()
{
CPaintDC dc(this);
CFont MyFont;
MyFont.CreateFont(-----); //フォント設定
CDC* myDC = GetDC();
CRect Myrect;
GetClientRect(&Myrect);
myDC->SelectObject(&Myrect);
myDC->DrawText(str,-1,&Myrect,DT_CENTER); //strを表示
ReleaseDC(myDC);
MyFont.DeleteObject();
}
というプログラムを作成しているのですが、この方法でのダイアログへの文字の表示では、たとえば90が表示され、次に100が表示されるのであればいいのですが、100のあとに90が表示された時に100の上にそのまま90が表示されてしまい、うまく表示できません。
再描画のときに、上書きではなく、前回の数値を消去してから新たな数値を表示できればいいとは思うのですが、やり方がわからず、ご意見をいただければと思い質問させていただきました。
どうか宜しくお願いいたします。
開発環境は
Windows CE 6.0
Visual Studio 2005
です。