在最小化的MFC窗口中查找CListCtrl的有效大小

时间:2015-04-21 19:53:39

标签: c++ winapi mfc clistctrl

在我的MFC应用程序中,用户可以最小化内部具有CListCtrl的窗口。我需要知道一旦用户恢复窗口,列表控件将显示多少可见项。

第一个实现使用了GetCountPerPage。这很有效,直到我们注意到最小化的窗口情况并发现它返回零。

我还尝试了GetClientRectGetWindowRectGetWindowPlacement(使用rcNormalPosition)来尝试找出CListCtrl的大小,以便我可以计算页数手动。所有这些API都返回位于不同屏幕外位置的空矩形。

一旦我恢复窗口,找出CListCtrl高度的最佳方法是什么?当然,真正的窗口矩形是以某种方式提供的。

2 个答案:

答案 0 :(得分:0)

CListCtrl是列表视图控件的包装器。要直接使用它,您可以尝试使用基本上发送LVM_GETCOUNTPERPAGE消息的宏ListView_GetCountPerPage(...)。如果仍然返回零,则此行为可能是默认情况下,或者是常见控件实现中的错误。如果列表视图无法在最小化状态下更改大小,则可能只需记住窗口最小化之前的最后一个有效值。

答案 1 :(得分:0)

一旦窗口恢复/最小化/显示/隐藏,将调用WM_SHOWWINDOW。因此,您可以使用此消息来调用OnShowWindow()并查找clistctrl的计数/高度。