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