環境: Visual Studio 2008、Visual Studio Feature Pack、MFC ダイアログ アプリ、Windows XP、新しいコモン コントロール。
タブ コントロール上にあるリスト コントロールに問題があります。
問題を再現するには、ダイアログ ベースのアプリを作成するだけです。そのダイアログにタブ コントロールを配置し、そのタブ コントロールにリスト コントロールを配置します。プロジェクトにコードを追加する必要はありません。ビルドして実行するだけです。フォーカスをリスト ビューに設定し、ダイアログを最小化するか、別のウィンドウを前面に表示します。
ダイアログを前面に戻すと、リストが正しく描画されません。
私が試したことの 1 つは、リスト コントロールの set focus イベントを処理することですが、空のメソッド本体を残しました。つまり...
void CMyListControl::OnSetFocus(CWnd* window)
{
// Default();
}
その後、再描画の問題はなくなりますが、リスト内の項目を選択できなくなります。Default への呼び出しのコメントを外すと、問題が再発します。
リストをタブの外に移動すると、問題はなくなります。タブまたはダイアログの別のコントロールにフォーカスを設定すると、問題は解決します。これは奇妙なものです。
実際、よく見ると、リスト自体が描画され、タブ コントロールによって隠されていることがわかります。