プロが教えるわが家の防犯対策術!

いつもお世話になっております。
ただいまVC++をもちいてアプリを作っておりますが画面がちらつきを押さえたく、質問させていただきます。

現在、STATICな領域がありまして、その中に文字を書いているのですが、
時間経過とともに文字が変わるものがあります。
その際、背景黒に白文字で以下のようにしています。

::ShowWindow(hoge,hogehoge,SW_HIDE);
::SetDlgItemText(hoge,hogehoge,text);
::ShowWindow(hoge,hogehoge,SW_SHOW);
とやっておりますが、スタティック領域全体が一瞬白くなってから
更新されます。
結構頻繁に更新するので、ちらつきが結構目立ってしまいます。
invalidateなどもやってみたのですが同様にちらついてしまいました。
なんとか改善したいのですが何か方法はありますでしょうか?
アドバイスよろしくお願いします。

A 回答 (4件)

私なら #2氏のように ShowWindowの SW_HIDE/SW_SHOWをやめて更新の頻度を抑える方向で考えます



単純なカウンタを用意して10回に1回更新する
更新イベントが停止したら最終的なデータで更新する
といった具合です …
    • good
    • 0

 こんにちは。



 ビットマップハンドルを一つ作成しておいて、それに向かってテキストを書き込んだ後、スタティックウィンドウに表示すれば出来るのではないでしょうか。

 //遠くで作成しておく
 HBITMAP g_hBmpBackBuffer;
 HPEN g_hPen;
 HBRUSH g_hBrush;

 //・
 //・
 //・

 //テキストを書く時
 HDC hDCBackBuffer = ::CreateCompatibleDC(NULL);
 HDC hDCStatic = ::GetDC(hWndStatic);
 ::SelectObject(hDCBackBuffer, g_hBrush);
 ::SelectObject(hDCBackBuffer, g_hPen);
 ::DrawText(hDCBackBuffer, , , , pszText);
 ::BitBlt(hDCStatic, , , , hDCBackBuffer, , , );
 ::ReleaseDC(hWndStatic, hDCStatic);
 ::DeleteDC(hDCBackBuffer);
    • good
    • 0

とりあえずShowWindow()のSW_HIDEとSW_SHOWの両者を止めてSetDlgItemText()だけにしてみましょう。

    • good
    • 0

「裏画面」とか「ダブルバッファリング」とか「ちらつき防止」とかで検索をかけてみては?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!