CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

如何捕获窗体下面的控件的一些消息?

楼主yanhawk(yanhawk)2005-06-01 11:51:25 在 C++ Builder / 基础类 提问

比如我现在要捕获窗体下面的一个button的一些消息,我在  
  void   __fastcall   TForm1::FormCreate(TObject   *Sender)  
  {  
          Button1->WindowProc   =   buttonWndProc;  
  }  
  void   __fastcall   TForm1::buttonWndProc(Messages::TMessage   &Message)  
  {  
          //这里进行处理  
  ............  
          TForm::WndProc(Message);  
  }  
  当时这样最终不行,请问如何捕获对该button的一些操作? 问题点数:50、回复次数:4Top

1 楼onestation(新手)回复于 2005-06-01 13:47:41 得分 0

你把TButton的消息全部传给了TForm处理当然不行啦!  
   
  Top

2 楼yanhawk(yanhawk)回复于 2005-06-01 15:11:21 得分 0

确实是这个问题,但是如果   TForm::WndProc(Message);改为   TButton::WndProc(Message);很显然又会报错。Top

3 楼onestation(新手)回复于 2005-06-02 15:44:20 得分 10

你可以自己继承一个自己的TButton,再重载WndProc函数,在主窗口中动态创建自己定义的Button  
   
  //---------------------------------------------------------------------------  
   
  #ifndef   Unit2H  
  #define   Unit2H  
  //---------------------------------------------------------------------------  
  #include   <StdCtrls.hpp>  
   
  //---------------------------------------------------------------------------  
  class   TMyButton   :   public   TButton  
  {  
  private: //   User   declarations  
  public: //   User   declarations  
                  void   __fastcall   WndProc(Messages::TMessage   &Message);  
                  __fastcall   TMyButton(TComponent*   Owner);  
                  __fastcall   ~TMyButton(void);  
  };  
  #endif  
   
   
  //---------------------------------------------------------------------------  
  #pragma   hdrstop  
   
  #include   "Unit2.h"  
  #pragma   package(smart_init)  
  //---------------------------------------------------------------------------  
  __fastcall   TMyButton::TMyButton(TComponent*   Owner):   TButton(Owner)  
  {}  
  __fastcall   TMyButton::~TMyButton(void)  
  {  
  }  
  void   __fastcall   TMyButton::WndProc(Messages::TMessage   &Message)  
  {  
                  if(   Application->MainForm   )  
                  {  
                          TCanvas   *   pCanvas   =   Application->MainForm->Canvas;  
                          pCanvas->TextOutA(100,100,IntToStr(Message.Msg));  
                  }  
   
                  TButtonControl::WndProc(Message);  
  }  
  //------------------------------------------------------------------------------  
  //主窗口  
   
   
  void   __fastcall   TForm1::FormDestroy(TObject   *Sender)  
  {  
          if(   Button1   )   delete   Button1;  
  }  
  //---------------------------------------------------------------------------  
  void   __fastcall   TForm1::FormCreate(TObject   *Sender)  
  {  
          Button1   =   new   TMyButton(NULL);  
          Button1->Parent   =   Form1;  
          Button1->Show();    
  }  
  //---------------------------------------------------------------------------  
   
  Top

4 楼COKING(天晴)回复于 2005-06-02 15:53:31 得分 40

OLDWndProc=   Button1->WindowProc;  
  Button1->WindowProc   =   buttonWndProc;  
   
  void   __fastcall   TForm1::buttonWndProc(Messages::TMessage   &Message)  
  {  
  //这里进行处理  
  ............  
  OLDWndProc(Message);  
  }Top

相关问题

  • 怎么样捕获窗体下面的控件的一些消息?
  • 郁闷好几天了,大虾快救我啊![ActiveX控件中捕获不到TWAIN消息,而做成应用,在窗体中可捕获消息]
  • 捕获窗体的最小化消息
  • 窗体移动时,窗体上的控件会收到什么消息呢?
  • 如何在A窗体中处理子窗体某个控件的消息/事件?
  • 如何不让控件捕获消息??
  • 捕获控件的双击消息!!!!!!!!!!!!!!!1
  • 关于窗体移动消息捕获的问题?
  • 如何让窗体截获发给控件的消息?
  • 求救:怎样向一个窗体或控件发消息?不用API!

关键词

  • 消息
  • tmybutton
  • 捕获
  • fastcall
  • wndproc
  • tbutton
  • tform
  • tmessage
  • unit2
  • message

得分解答快速导航

  • 帖主:yanhawk
  • onestation
  • COKING

相关链接

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

广告也精彩

反馈

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