プログラミングメモ - Aero UI と MFC のツールバーとか

2012/02/01

久しぶりに表示系を作っているので少し。

VC++ 9.0(Visual Studio 2008)の MFC でツールバーを普通にくっつけると,Windows 7 の Aero UI ではウィンドウをリサイズするタイミングでツールバーの背景が再描画されなかったりします。何度もリサイズしていると,ツールバーの背景に白いスジがついてしまう。

白いすじが付くの図
図1 白いすじが付くの図

これ,意外と目立つと思うんだけれども,ネット上ではあまり対応が紹介されていない感じ。こんな風に,CFrameWnd::RecalcLayout をオーバーライドして,強制的に再描画すればすればいいだけなんですけどね。

void
CMainFrame::RecalcLayout(BOOL bNotify) {
  Invalidate();  // 追加
  CFrameWnd::RecalcLayout(bNotify);
}

MFC はバージョンごとに特性が違うもんだから,いつもと違うものを使うときは躊躇してしまう……。ま,ただそれだけ。

Site Navigation
SNS Accounts (@aian)

普段はここら辺に住んでいます.