在Delphi 5中,这曾经起作用。我有一个来自TCustomControl的组件,我实现了cmmouseleave消息:
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
现在,如果我只是将鼠标移到控件上,则会触发消息,但如果我在按住鼠标左键的同时移动鼠标,则不会触发相同的消息。 AFAIK我没有调用begindrag方法,并且dragmode设置为手动。 什么可能发生的任何线索?
答案 0 :(得分:6)
按左按钮时捕获鼠标。因此,即使鼠标在控件之外,控件也会接收鼠标移动消息(WM_MOUSEMOVE
)。释放按钮时,它将收到鼠标离开消息。这也应该是D5的情况。
如果您不希望捕获鼠标以回复csCaptureMouse
,则可以从ControlStyle
中排除WM_LBUTTONDOWN
。