子ウィンドウのちらつき防止(VC++) ウィンドウが周期的にInvalidate()などの関数を呼び出して、絵やグラフなどのオーナードローを行う場合は、このウィンドウ上に配置されているコントロール、子ウィンドウがちらついて見えることがあります。ウィンドウ スタイルについて、マイクロソフトのMSDNに下記の記述がありす。 WS_CLIPCHILDREN 親ウィンドウの内部で描画するときに、子ウィンドウが占める領域を除外します。親ウィンドウを作成するときに使います。 従って、ウィンドウのスタイルに、WS_CLIPCHILDRENを加えれば、子ウィンドウのちらつきが防げます。 使用例: BOOL CAboutDlg::OnInitDialog() { CDialogEx::OnInitDialog(); SetTimer(1, 10, NULL); ModifyStyle(0, WS_CLIPCHILDREN); return TRUE; } void CAboutDlg::OnTimer(UINT_PTR nIDEvent) { Invalidate(); //10ms周期で再描画 CDialogEx::OnTimer(nIDEvent); } |