在最小化的 MFC 窗口中查找 CListCtrl 的有效大小
Finding effective size of CListCtrl within minimized MFC window
在我的 MFC 应用中,用户可以最小化内部具有 CListCtrl 的窗口。我需要知道用户还原窗口后列表控件将显示多少个可见项。
第一个实现使用GetCountPerPage
.这工作得很好,直到我们注意到最小化的窗口情况并发现它返回零。
我还尝试了GetClientRect
、GetWindowRect
和GetWindowPlacement
(使用 rcNormalPosition
)来尝试计算 CListCtrl 的大小,以便我可以手动计算页数。所有这些 API 都返回位于各个屏幕外位置的空矩形。
窗口后 CListCtrl 的高度的最佳方法是什么?当然,真正的窗口矩形以某种方式可用。
CListCtrl 是列表视图控件的包装器。要直接使用它,您可以尝试使用宏 ListView_GetCountPerPage(...),它基本上是发送LVM_GETCOUNTPERPAGE消息。如果仍然返回零,则此行为可能是默认的,或者是常见控件实现中的错误。如果您的列表视图无法在最小化状态下更改大小,您可能只记住窗口最小化之前的最后一个有效值。
一旦窗口被恢复/最小化/显示/隐藏,WM_SHOWWINDOW将被调用。因此,您可以使用此消息调用 OnShowWindow() 并查找 clistctrl 的计数/高度。
相关文章:
- 欧拉项目#8答案是大以获得有效答案
- 调整大小后指向元素值的指针unordered_map有效?
- 为什么是0;C++中的有效语句
- 最高有效数字侧的第N位
- GCC对可能有效的代码抛出init list生存期警告
- 有效地使用std::unordered_map来插入或增加键的值
- c++中O(n^(1/3))中一个数的除数的有效计数
- 使用无符号字符数组有效存储内存
- 自定义先决条件对移动分配运算符有效吗
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 有哪些有效的方法可以消除一组 100 万个字符串>重复数据?
- 为什么这种直接初始化有效?(C++17)
- 递归函数有效,但无法记忆
- 在C++中初始化向量映射的最有效方法
- 如果变量名称不跟在 char* 后面,const char* 是否有效?
- 钳制迭代器是否有效
- 如何有效地在 std::vector 中插入一对?
- C++模板 t 不是有效的模板类型
- 检查由括号、方括号和大括号组成的一组方括号是否有效?
- 在最小化的 MFC 窗口中查找 CListCtrl 的有效大小