术语 | COleControl::GetActivationPolicy | |||||||||
释义 | COleControl::GetActivationPolicy virtual DWORD GetActivationPolicy( ); 返回值: POINTERINACTIVE枚举的标志组合。可能的标志是:
说明: 若要改变支持IPointerInactive界面的控件的缺省激活行为,可覆盖该函数。 当IPointerInactive界面有效时,控件会将WM_SETCURSOR和WM_MOUSEMOVE转发给它。COleControl实现该界面时将会在适当调校鼠标坐标后,通过控件的消息映射表将分派这些消息。 一旦包容器接收到WM_SETCURSOR或WM_MOUSEMOVE,而且鼠标指向一个支持 IPointerInactive的非活动对象时,它会在界面上调用GetActivationPolicy然后返回POINTERINACTIVE枚举的标志。 可以在消息映射表中增加相应的入口点,同其它的窗口消息一样来处理这些消息。在你的消息处理函数中,应该避免在检查m_hWnd值为非NULL时使用m_hWnd成员变量(或使用该成员变量的任何成员函数)。 如果一个对象想在设置鼠标光标和/或触发鼠标移动事件以外,进行更多的鼠标处理操作,例如给出特别的可视反馈,必须返回POINTERINACTIVE_ACTIVATEONENTRY标志,并且只能在活动时进行反馈。 如果对象返回该标志,包容器必须立即激活该对象,然后向它发出相同的消息以触发对GetActivationPolicy的调用。 如果同时返回POINTERINACTIVE_ACTIVATEONENTRY和POINTERIN ACTIVE_DEACTIVATEONLEAVE 标志,那么对象只能在鼠标移到时才能被激活。如果仅返回POINTERINACTIVE_ACTIVATEONENTRY 标志,该对象仅在鼠标第一次进入对象时被激活。 有时可能要将一个非活动控件作为一次OLE拖放操作的目标。这要求在用户拖拉控件时激活控件,以便将控件窗口注册为一个放下的目标。要在拖拉时激活控件,则返回POINTERINACTIVE_ACTIVATEONDRAG标志: DWORD CMyCtrl::GetActivationPolicy() { return POINTERINACTIVE_ACTIVATEONDRAG; } GetActivationPolicy通讯的信息必须由包容器进行缓冲。否则,该方法必须在每一次鼠标进入非活动对象时调用。 如果一个非活动对象在鼠标进入时不要求被激活,它的包容器必须在鼠标停留在对象上时调用OnInactiveSetCursor向该对象分派持续的WM_SETCURSOR消息。 使IPointerInactive界面有效通常意味着使控件在任何时候具有处理鼠标消息的能力。如果不支持IPointerInactive界面,那么需要使你的控件自始至终都处于活动状态才能处理鼠标消息,这意味着控件必须具有OLEMISC_ACTIV ATEWHENVISIBLE标志。然而,为避免该标志影响支持IPointerInactive的包容器,你还要指定OLEMISC_IGNOREACTIVATEWHENVISIBLE标志: static const DWORD BASED_CODE _dwMyOleMisc = OLEMISC_ACTIVATEWHENVISIBLE | OLEMISC_IGNOREACTIVATEWHENVISIBLE | OLEMISC_SETCLIENTSITEFIRST | OLEMISC_INSIDEOUT | OLEMISC_CANTLINKINSIDE | OLEMISC_RECOMPOSEONRESIZE; 请参阅:COleControl::OnInactiveSetCursor, COleControl::OnInactiveMouseMove |
|||||||||
随便看 |
|
MFC类库中文详解手册包含4274条MFC类库参考词条,基本涵盖了Microsoft基本类库中的类、全局函数、全局变量和宏的内容,是计算机编程的有利工具。