请教各位大能,我有个类,里面包含一个TImage对象,如何做才能拦截这个TImage对象的CM_MOUSEENTER和CM_MOUSELEAVE消息?

解决方案 »

  1.   

    直接把TImage有MouseEnter和MouseLeave事件发布出来就可以。
      

  2.   


    这个类不是从TImage继承的,怎样才能发布这2个事件?
    给个例子好吗?
      

  3.   

    btnAddContact.WindowProc:=btnAddContactMouseWnd ;procedure TFrmMain.btnAddContactMouseWnd(var message: TMessage);
    begin
      case message.Msg of
         CM_MOUSELEAVE:
         begin
          DM.loadPngImage(btnAddContact,add_contactNew1);
          Application .HintMouseMessage(btnAddContact,message );
          end ;
         CM_MOUSEENTER:
         begin
          DM.loadPngImage(btnAddContact, add_contactNew3);
          Application .HintMouseMessage(btnAddContact,message );
        end;
        end ;
      btnAddContact.Dispatch(message);
    end;
      

  4.   

        procedure CMMouseEnter( var Msg: TMessage ); message cm_MouseEnter;
        procedure CMMouseLeave( var Msg: TMessage ); message cm_MouseLeave;用这两个就可以了
      

  5.   

    对, 可以参见帮助中的 "Message methods".
      

  6.   


    cm_MouseEnter和cm_MouseLeave是需要鼠标移到或移出某个界面上才会触发消息的,如果类的对象没有界面怎么能捕获这2个消息?