CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

自己写继承组件从 TDBComboBox [DBCtrls] 会出错? bcb的bug?

楼主TryToday(超口术生命体)2004-04-02 01:09:57 在 C++ Builder / 基础类 提问

大家可以新建一个定制组件,从TDBComboBox     [DBCtrls]继承,什么代码也不写,编译竟然通不过,连接错误.  
  是BCB的bug吗? 问题点数:20、回复次数:8Top

1 楼xiaoshi0(Rain)回复于 2004-04-02 09:09:58 得分 0

不可能,我没有这样的情况Top

2 楼wcccc1(小猪义义)回复于 2004-04-02 09:42:12 得分 0

楼主是你自己的问题吧  
  Top

3 楼TryToday(超口术生命体)回复于 2004-04-02 14:00:21 得分 0

换了一台机子,还是不行.  
  如果哪位编译通过,请将代码发给我,谢谢:  
  miaohui010@sina.comTop

4 楼jishiping(JSP 季世平)回复于 2004-04-02 16:15:00 得分 0

不可能吧。你不要光说有错误,应该说出是什么错了,以及相应的代码。Top

5 楼gycxy(静水)回复于 2004-04-02 17:11:21 得分 0

你的类是怎么写的啊?能否列出来Top

6 楼TryToday(超口术生命体)回复于 2004-04-02 20:27:44 得分 0

冤枉,我一个字都没写,自动生成的,其他类没问题,就他毛病大,大家如果想看代码如下:  
   
  //DBComboBoxTest.h  
  //---------------------------------------------------------------------------  
   
  #ifndef   DBComboBoxTestH  
  #define   DBComboBoxTestH  
  //---------------------------------------------------------------------------  
  #include   <SysUtils.hpp>  
  #include   <Classes.hpp>  
  #include   <Controls.hpp>  
  #include   <DBCtrls.hpp>  
  #include   <StdCtrls.hpp>  
  //---------------------------------------------------------------------------  
  class   PACKAGE   TDBComboBoxTest   :   public   TDBComboBox  
  {  
  private:  
  protected:  
  public:  
          __fastcall   TDBComboBoxTest(TComponent*   Owner);  
  __published:  
  };  
  //---------------------------------------------------------------------------  
  #endif  
   
   
   
   
   
   
   
  //DBComboBoxTest.cpp  
  //---------------------------------------------------------------------------  
   
  #include   <vcl.h>  
   
  #pragma   hdrstop  
   
  #include   "DBComboBoxTest.h"  
  #pragma   package(smart_init)  
  //---------------------------------------------------------------------------  
  //   ValidCtrCheck   is   used   to   assure   that   the   components   created   do   not   have  
  //   any   pure   virtual   functions.  
  //  
   
  static   inline   void   ValidCtrCheck(TDBComboBoxTest   *)  
  {  
          new   TDBComboBoxTest(NULL);  
  }  
  //---------------------------------------------------------------------------  
  __fastcall   TDBComboBoxTest::TDBComboBoxTest(TComponent*   Owner)  
          :   TDBComboBox(Owner)  
  {  
  }  
  //---------------------------------------------------------------------------  
  namespace   Dbcomboboxtest  
  {  
          void   __fastcall   PACKAGE   Register()  
          {  
                    TComponentClass   classes[1]   =   {__classid(TDBComboBoxTest)};  
                    RegisterComponents("System",   classes,   0);  
          }  
  }  
  //---------------------------------------------------------------------------  
   
   
   
   
   
  错误信息:  
  [Linker   Error]   Unresolved   external   '__fastcall   Dbctrls::TDBComboBox::ComboWndProc(Messages::TMessage&,   int,   void   *)'   referenced   from   C:\PROGRAM   FILES\BORLAND\CBUILDER6\LIB\RELEASE\VCLE.LIB|_t_Dbctr  
   
   
  bpk文件不用看了吧,反正我看着挺乱.Top

7 楼jishiping(JSP 季世平)回复于 2004-04-02 22:16:16 得分 20

试了一下,果然有问题。只有自己重载一下虚拟函数   ComboWndProc   了。  
  class   PACKAGE   TDBComboBoxTest   :   public   TDBComboBox  
  {  
  private:  
  protected:  
      void   __fastcall   ComboWndProc(TMessage   &Message,  
              HWND   ComboWnd,   void   *   ComboProc);  
  public:  
          __fastcall   TDBComboBoxTest(TComponent*   Owner);  
  __published:  
  };  
   
  __fastcall   TDBComboBoxTest::TDBComboBoxTest(TComponent*   Owner)  
          :   TDBComboBox(Owner)  
  {  
  }  
  //---------------------------------------------------------------------------  
  void   __fastcall   TDBComboBoxTest::ComboWndProc(TMessage   &Message,  
          HWND   ComboWnd,   void   *   ComboProc)  
  {  
          //看了一下源程序,源程序的   ComboWndProc   不只是继承   TCustomComboBox  
          //的ComboWndProc函数,它还对Style   为   csSimple时的WM_LBUTTONDOWN消息  
          //作了处理,但是源程序中用到了FDataLink,这个FDataLink的类型是私有的  
          //(private)。Delphi中继承的class可以访问父类私有的变量,但是C++不  
          //可以,所以这儿无法完全将源程序搬过来,少了一个处理  
          TCustomComboBox::ComboWndProc(Message,   ComboWnd,   ComboProc);  
  }Top

8 楼TryToday(超口术生命体)回复于 2004-04-02 22:53:17 得分 0

大师讲的不太理解,反正程序ok了,感谢!  
  这么大的bug   borland都没发现,用户也没发现,莫非我是继承DBComboBox第一人.Top

相关问题

  • 奇怪,scripting.filesystemobject组件有BUG?
  • 无组件上传(upload_5xsoft)的bug
  • -----------BCB的FASTNET组件BUG太多拉~~~~~~~~~~~哪有Indy组件下载呢???????
  • C++Builder5AdoQuery组件的Bug补丁谁知道那里有????
  • 组件
  • 组件
  • “swing组件的requestFoucs()方法这一个Bug”的补救措施的讨论!
  • 寻求组件
  • 使用组件
  • !!!!组件开发!!!!

关键词

  • 代码
  • tdbcomboboxtest
  • tdbcombobox
  • combowndproc
  • dbctrls
  • dbcomboboxtest
  • 继承
  • fastcall
  • comboproc
  • combownd

得分解答快速导航

  • 帖主:TryToday
  • jishiping

相关链接

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

广告也精彩

反馈

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