在我的MFC应用程序中,用户可以最小化内部具有CListCtrl的窗口。我需要知道一旦用户恢复窗口,列表控件将显示多少可见项。
第一个实现使用了GetCountPerPage
。这很有效,直到我们注意到最小化的窗口情况并发现它返回零。
我还尝试了GetClientRect
,GetWindowRect
和GetWindowPlacement
(使用rcNormalPosition
)来尝试找出CListCtrl的大小,以便我可以计算页数手动。所有这些API都返回位于不同屏幕外位置的空矩形。
一旦我恢复窗口,找出CListCtrl高度的最佳方法是什么?当然,真正的窗口矩形是以某种方式提供的。
答案 0 :(得分:0)
CListCtrl是列表视图控件的包装器。要直接使用它,您可以尝试使用基本上发送LVM_GETCOUNTPERPAGE消息的宏ListView_GetCountPerPage(...)。如果仍然返回零,则此行为可能是默认情况下,或者是常见控件实现中的错误。如果列表视图无法在最小化状态下更改大小,则可能只需记住窗口最小化之前的最后一个有效值。
答案 1 :(得分:0)
一旦窗口恢复/最小化/显示/隐藏,将调用WM_SHOWWINDOW。因此,您可以使用此消息来调用OnShowWindow()并查找clistctrl的计数/高度。