起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 174|回复: 4

【搞定】实现image的热点?**

[复制链接]
发表于 2007-5-27 16:53:29 | 显示全部楼层 |阅读模式
我从image继承了一个子类,想实现热点。在delphi里,通过实现CMMouseEnter和CMMouseLeave消息,判断鼠标的移入和移出。但在平台里,定义我从image继承了一个子类,想实现热点。在delphi里,通过实现CMMouseEnter和CMMouseLeave消息,判断鼠标的移入和移出。但在平台里,定义CMMouseEnter和CMMouseLeave的过程,但编译的时候,会报错?请问,能有其它方法实现吗?
回复

使用道具 举报

发表于 2007-5-28 08:49:34 | 显示全部楼层
重载WndProc方法,在这个方法中对windows消息进行处理
回复 支持 反对

使用道具 举报

发表于 2007-5-28 22:33:52 | 显示全部楼层
楼主能不能个简单的例子?
回复 支持 反对

使用道具 举报

发表于 2007-5-29 09:36:18 | 显示全部楼层
Delphi中的例子,其实平台上也是一样的

procedure TDragObject.WndProc(var Msg: TMessage);
var
  P: TPoint;
begin
  try
    case Msg.Msg of
      WM_MOUSEMOVE:
        begin
          P := SmallPointToPoint(TWMMouse(Msg).Pos);
          ClientToScreen(DragCapture, P);
          DragTo(P);
        end;
      WM_CAPTURECHANGED:
        DragDone(False);
      WM_LBUTTONUP, WM_RBUTTONUP:
        DragDone(True);
      { Forms.IsKeyMsg sends WM_KEYxxx messages here (+CN_BASE) when a
        TPUtilWindow has the mouse capture. }
      CN_KEYUP:
        if Msg.WParam = VK_CONTROL then DragTo(DragObject.DragPos);
      CN_KEYDOWN:
        begin
          case Msg.WParam of
            VK_CONTROL:
              DragTo(DragObject.DragPos);
            VK_ESCAPE:
              begin
                { Consume keystroke and cancel drag operation }
                Msg.Result := 1;
                DragDone(False);
              end;
          end;
        end;
    end;
  except
    if DragControl <> nil then DragDone(False);
    Application.HandleException(Self);
  end;
end;
回复 支持 反对

使用道具 举报

发表于 2007-5-29 09:57:26 | 显示全部楼层
谢谢楼主,结帖。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-10 23:48 , Processed in 0.038399 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表