MFC:是不是有事件检测 CDockablePane 派生窗口何时通过滑出或显示打开?

Posted

技术标签:

【中文标题】MFC:是不是有事件检测 CDockablePane 派生窗口何时通过滑出或显示打开?【英文标题】:MFC: Is there an event to detect when a CDockablePane derived window has been opened either by sliding out or showing?MFC:是否有事件检测 CDockablePane 派生窗口何时通过滑出或显示打开? 【发布时间】:2010-12-15 18:17:43 【问题描述】:

我想延迟 CDockablePane 派生窗口的初始化,直到窗口实际显示。如果窗口只是停靠,那么 WM_SHOWWINDOW 非常有效,但是当窗口处于 AutoHideMode 时,WM_SHOWWINDOW 是不可预测的,我看不到表明滑出已完成的事件。

有什么建议吗?

【问题讨论】:

【参考方案1】:

我选择的解决方案是在IsAutoHideMode()FALSE 时覆盖虚拟方法CDockablePane::ShowPane,在不是时覆盖CDockablePane::OnSlide

【讨论】:

【参考方案2】:

尝试重写CDockablePane::CheckStopSlideCondition,将bSlideDirection和基类实现的返回值保存在某处

当 nIDEvent 为 AFX_AUTO_HIDE_SLIDE_OUT_EVENT 时,覆盖 CDockablePane::OnTimer 并检查基类实现后保存的值:

注意:AFX_AUTO_HIDE_SLIDE_OUT_EVENT 未记录在案,可能在未来版本的 MFC 中不可用

【讨论】:

感谢您抽出宝贵的时间,虽然我认为这不是正确的解决方案。我已经添加了答案。

以上是关于MFC:是不是有事件检测 CDockablePane 派生窗口何时通过滑出或显示打开?的主要内容,如果未能解决你的问题,请参考以下文章

检测 MFC 控件是不是没有足够的宽度来容纳文本(并且文本将被截断)

在MFC中能否使用异步IO的事件选择模型

如何检测浏览器是不是支持鼠标悬停事件?

mfc钩子

MFC(C++):为啥顶部的控件不接收事件?

MFC中如何在指定的区域响应鼠标单击事件