鼠标消息、窗口状态的管理
首先来看CBkDialogViewImpl类的鼠标消息处理方法
OnMouseLeave方法:
如果现在处于非跟踪的状态,那么调用_TrackMouseEvent并设置m_bTrackFlag;
之后获取现在鼠标所悬停的控件,通过调用header,body和footer的BkGetHWNDFromPoint方法来判断,因为这三者覆盖整个客户区域
如果当前悬停控件和记录的hover控件不一致,那么进行更新操作
OnMouseLeave方法:
设置不跟踪状态
如果hover控件存在,那么重置状态
如果pushdown控件存在,那么重置状态
OnLButtonDown方法:
查看是否是点击标题栏,如果是,调用最大化,最小化和恢复处理
在非标题栏点击情况下,设置capture状态
OnLButtonUp方法
ReleaseCapture,设置控件状态
OnLButtonDblClk方法
在双击标题栏情况下最大化或者恢复窗口
在类CBkWindow 中,使用m_dwState变量来标示控件的状态,主要由以下几种状态:
// State Define
enum{
BkWndState_Normal = 0x00000000UL, //正常
BkWndState_Hover = 0x00000001UL, //悬停
BkWndState_PushDown = 0x00000002UL, //按下
BkWndState_Check = 0x00000004UL, //选中
BkWndState_Invisible = 0x00000008UL, //不可见
BkWndState_Disable = 0x00000010UL, //失活
};
主要使用ModifyState方法来改变控件的状态。
736

被折叠的 条评论
为什么被折叠?



