CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  VCL组件使用和开发

消息映射的问题

楼主gaosifu(博博)2005-12-22 18:34:06 在 C++ Builder / VCL组件使用和开发 提问

自定义类  
  希望截获WM_MOUSELEAVE消息  
   
   
  .h文件  
   
  #include   <Mask.hpp>  
  #include   <Classes.hpp>  
  #include   <Forms.hpp>  
  #include   <stdio.h>  
  #include   "CGAUGES.H"  
   
  //---------------------------------------------------------------------------  
  class   PACKAGE   TCellPanel   :   public   TPanel  
  {  
  private:  
               
                TControlCanvas     *ACanvas;  
   
  protected:  
                void   __fastcall   Drawframe();         //给控件增加外框  
                void   __fastcall   DrawNoframe();     //给控件取消外框  
                void   __fastcall   WndProc(Messages::TMessage   &Message);  
                void   __fastcall   DrawPoint();         //画连接点  
                void   __fastcall   DrawNoPoint();     //取消连接点  
                DYNAMIC   void   __fastcall   MouseMove(TShiftState   Shift,int   X,int   Y);  
                void   __fastcall   MouseLeave(TMessage   &Message);  
   
  BEGIN_MESSAGE_MAP  
    MESSAGE_HANDLER(WM_MOUSELEAVE,TMessage,MouseLeave);  
  END_MESSAGE_MAP(TComponent)  
   
  private:  
   
  public:  
                  __fastcall   TCellPanel(TComponent*   Owner);  
                  int   ShapType;                   //控件外形   1   Start   2   Send   3   receive  
                  bool   bClick_Select;       //是否被单击选中  
                  bool   bPoint;                     //是否出现连接点  
   
   
  __published:  
                __property   Align;  
                __property   BorderStyle;  
                __property   Color;  
                __property   Canvas;  
                __property   BevelInner;  
                __property   BevelOuter;  
                __property   BorderWidth;  
                __property   Parent;  
   
   
   
   
   
   
  };  
  //---------------------------------------------------------------------------  
  #endif  
   
   
  在.cpp文件中定义MouseLeave如下:  
   
  void   __fastcall   TCellPanel::MouseLeave(TMessage   &Message)  
  {  
   
      DrawPoint();  
       
   
  }  
   
  编译通过了,但是调试时当鼠标移出控件时并没有调用MouseLeave函数,为何?请各位大侠指点!!  
   
  问题点数:20、回复次数:6Top

1 楼Libran()回复于 2005-12-22 18:55:58 得分 10

BEGIN_MESSAGE_MAP  
    MESSAGE_HANDLER(CM_MOUSELEAVE,TMessage,MouseLeave);  
  END_MESSAGE_MAP(TPanel)Top

2 楼gaosifu(博博)回复于 2005-12-23 13:06:10 得分 0

Libran()你好,   Windows也有WM_MOUSELEAV消息,请问什么时候用WM_MOUSELEAV,什么时候用  
  CM_MOUSELEAV?  
   
  还有下面一个问题:  
   
  对于MOUSEMOVE消息可以这样用:  
   
    在.h文件中加上:  
    DYNAMIC   void   __fastcall   MouseMove(TShiftState   Shift,int   X,int   Y);  
   
    在.cpp文件加上:  
    void   __fastcall   TCellPanel::MouseMove(TShiftState   Shift,int   X,int   Y)  
  {  
      TPanel::MouseMove(Shift,X,Y);  
      DrawPoint();  
  }  
   
  但类似的方法用在MOUSELEAVE消息上就不行,问什么呢?  
   
  Top

3 楼ccrun(老妖)(www.ccrun.com)回复于 2005-12-23 13:15:48 得分 10

因为VCL中的TControl只有MouseMove事件,没有MouseLeave事件。  
   
  BTW:   CLX中有。Top

4 楼gaosifu(博博)回复于 2005-12-23 13:38:18 得分 0

ccrun(老妖)大哥,给推荐些学习VCL的资料吧,谢了!Top

5 楼gaosifu(博博)回复于 2005-12-23 13:39:07 得分 0

另,BTW:   CLX是什么?Top

6 楼ccrun(老妖)(www.ccrun.com)回复于 2005-12-23 13:44:02 得分 0

In   computing,   Component   Library   for   Cross   Platform   (CLX),   is   a   cross-platform   visual   component-based   framework   for   developing   Microsoft   Windows   and   Linux   applications.   It   is   developed   by   Borland   for   use   in   its   Kylix,   Delphi,   and   C++   Builder   software   development   environment.   There   is   a   Microsoft   Windows-only   equivalent   of   CLX   called   VCL   (Visual   Component   Library).    
   
  简单来说就是跨平台组件库,传说中的Linux中用的VCL,我不曾用过。Top

相关问题

  • 消息映射!
  • 消息映射
  • 关于消息映射
  • 什么是消息映射?
  • 【求救!】mfc消息映射
  • 如何响应键盘??(消息映射)??
  • 消息映射可以继承......?
  • CCheckListBox类的消息映射问题
  • 关于消息映射的问题!
  • vc7 怎样映射toolbar的消息?

关键词

  • 消息
  • 控件
  • 文件
  • 连接
  • component
  • mouseleave
  • fastcall
  • tcellpanel
  • clx
  • mousemove

得分解答快速导航

  • 帖主:gaosifu
  • Libran
  • ccrun

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo