首先让我说,按照今天的标准,我正在使用旧技术!这发生在 Visual Studio 2005 上的 MFC 中并在 WinXP 下运行。(如果它没有坏掉...... ;-))
我有一个基于对话框的应用程序,它有一个带有两个选项卡的 CTabCtrl。每个都包含一个 CListCtrl。这些在正常情况下工作得很好。它们正确填充并按应有的方式显示和隐藏。当我第一次打开应用程序时,显示选择是正确的。如果我然后最小化对话框并恢复,CList Ctrl 不显示,选项卡为空白。它是唯一存在此问题的控件。CTabCtrl 之外的另一个 CListCtrl 确实显示正确。如果我然后交换选项卡并再次返回,则显示另一个选项卡,然后第一个选项卡正常显示。
如果我在最小化之前访问对话框的任何其他部分,则不会发生这种情况,只有当最小化是我采取的绝对第一个操作时。如果我在设置 CTabCtrl 的 OnInitDialog 中将此选项卡设置为在启动时选中,那么我在另一个选项卡中的 CListCtrl 也会发生这种情况。
我实际上已经通过在我的 OnSysCommand(...) 中添加以下内容来解决这个问题的效果:
if ((nID & 0xFFF0) == SC_RESTORE)
{
m_ctrlReadList.Invalidate();
}
但它让我感到困扰,我正在添加代码来解决仅在这种奇怪情况下发生的问题。我不禁想到我在设置中遗漏了一些导致这种行为的东西。任何人都可以首先解释是什么原因造成的吗?