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

dll里的窗体,ShowModal为什么出错呀?

楼主voxforce(阿便)2003-02-03 16:06:30 在 C++ Builder / VCL组件使用和开发 提问

不知道为什么 问题点数:0、回复次数:10Top

1 楼zliang2000(蝴蝶剑)回复于 2003-02-03 20:01:42 得分 0

may   be   it   will   be   ShowModel!!!Top

2 楼ffww(疯子)回复于 2003-02-03 22:28:31 得分 0

//*********************************************  
  *     用     途:动态链接库的创建和使用                           *        
  *     单     位:枫馨电脑工作室                                           *  
  *     时     间:2003-01-11                                                   *  
  *     整     理:疯子                                                               *  
  *     附     注:CB6下测试OK,采用静态链接方式             *  
  **********************************************//  
   
  一、在DLL中使用窗体。  
  1、FILE   |   NEW   |   OTHER   |   DLL   Wizard,确认后产生以下代码:并将其保存为DLL.cpp  
  2、NEW   |   FORM新建一个窗体,在其上随便加几个控件。窗体名为DllFrm,并将其保存为DllForm.cpp.  
  3、NEW   |   TEXT,将其保存为DLL.h文件。编写代码如下:  
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  #ifndef   DllH  
  #define   DllH  
   
  #include   "DllForm.h"  
   
  class   __declspec(dllexport)   __stdcall   MyDllClass  
  {  
                  public:  
                                  MyDllClass();  
                                  void   CreateAForm();  
                                  TDllFrm*   DllMyForm;  
  };  
  extern   "C"   __declspec(dllexport)__stdcall   void   CreateFromFunct();     //全局函数  
   
  #endif  
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
   
  4、对应DLL.cpp文件代码应编写如下:  
   
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  #include   <vcl.h>           //选择了使用VCL控件,否则可以删除该句。  
  #include   <windows.h>    
  #include   "Dll.h"           //加上这几句  
  #include   "DllForm.h"  
  USERES("Dll.res");  
  USEFORM("DllForm.cpp",DllFrm);  
   
  #pragma   hdrstop  
  //---------------------------------------------------------------------------  
  //     系统自动产生的注释  
  //---------------------------------------------------------------------------  
  #pragma   argsused  
  //动态链接库的入口函数,类似于main函数  
  int   WINAPI   DllEntryPoint(HINSTANCE   hinst,   unsigned   long   reason,   void*   lpReserved)  
  {  
                  return   1;  
  }  
  //---------------------------------------------------------------------------  
  MyDllClass::MyDllClass()  
  {  
  //构造函数在这里  
  }  
  //---------------------------------------------------------------------------  
  void   MyDllClass::CreateAForm()  
  {  
                  DllMyForm=new   TDllFrm(Application);  
                  DllMyForm->Show();  
  }  
  //---------------------------------------------------------------------------  
  void   MyDllClass::CreateAForm()  
  {  
                  DllMyForm=new   TDllFrm(Application);  
                  DllMyForm->Show();  
  }  
  //---------------------------------------------------------------------------  
  void   __stdcall   CreateFormFunct()     //注意这个全局函数的声明  
  {  
                  TDllFrm*   DllMyForm2=new   TDllFrm(Application);  
                  DllMyForm2->Show();  
  }  
  //---------------------------------------------------------------------------  
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
   
  5、编译后系统自动生成mydll.dll文件,请在控制始模式下键入命令implib   DLL.lib   DLL.dll,生成DLL.lib文件。  
  6、新建一Application,在窗体上放置一Button按钮。然后在project   |   ADD   project将DLL.LIB文件导入.并在其头文件中加入:  
  #include   "DllForm.h"     //因为有窗体,所以要加这句,如果没有就不必了。  
    __declspec(dllimport)   class     __stdcall   MyDllClass  
  {  
                  public:  
                                  MyDllClass();  
                                  void   CreateAForm();  
                                  TDllFrm*   DllMyForm;  
  };  
  extern   "C"   __declspec(dllimport)__stdcall   void   CreateFromFunct();   //注意这里变成了dllimport  
   
  7、在Button的点击事件中加入:  
  MyDllClass   *DllClass=new   MyDllClass();  
  DllClass->CreateAForm();  
  或者可以用这句代码:   CreateFromFunct();效果都是一样的。  
  8、当然,在窗口关闭FormClose事件中不要忘了删除动态创建的指针:delete   DllClass;  
   
  举一反三吧!!Top

3 楼lanren_me(阿波)回复于 2003-02-08 13:05:11 得分 0

以下可有可无,我用过很多窗体dll,都不用添加.  
   
  #include   "DllForm.h"     //因为有窗体,所以要加这句,如果没有就不必了。Top

4 楼lanren_me(阿波)回复于 2003-02-08 13:06:21 得分 0

再说了,加入是vb   OR   delphi   的dll,那还有.h文件???Top

5 楼hongliqiu(在火中)回复于 2003-06-26 14:26:25 得分 0

在   ffww(疯子)的程序中需要添加的。  
  因为他用到了  
    __declspec(dllimport)   class     __stdcall   MyDllClass  
  {  
                  public:  
                                  MyDllClass();  
                                  void   CreateAForm();  
                                  TDllFrm*   DllMyForm;       //这个声明  
  };  
  Top

6 楼flyinger(风往北吹)回复于 2003-08-26 01:24:48 得分 0

垃圾!程序!Top

7 楼flyinger(风往北吹)回复于 2003-08-26 01:26:08 得分 0

我以前也写这种垃圾!你   可以看1  
  http://expert.csdn.net/Expert/topic/2157/2157261.xml?temp=7.764834E-02  
  Top

8 楼Behard(我爱天安门)回复于 2003-08-26 01:41:45 得分 0

ffww(疯子)   的程序很熟呀?  
   
  看了看;原来是《C++   Builder   应用开发大全》(for   BCB3.0)上面的例程  
  也不能说是垃圾呀  
  ^_^   很经典的   BCB   书籍呀Top

9 楼ljianq(泉深水清)回复于 2003-08-26 11:42:21 得分 0

《C++   Builder   应用开发大全》上面关于MDI中使用Dll的例子,完全编译后,有问题。Top

10 楼sprewellkobe(我为软件狂!)回复于 2003-08-26 12:05:21 得分 0

呵呵,你错误在哪  
   
  把代码帖出来呀Top

相关问题

  • 在DLL中调用一个窗体,出错
  • DLL封装窗体出错,望高手指点。
  • 把原来的mdichild窗体改为normal,用showmodal方法时怎么老出错?
  • 大侠,我使用dll中的MDI子窗体,为什么会出错。
  • 调用dll子窗体出错,在线等,各位老大请进
  • Dll 窗体 与 Action
  • 我这样调用dll中的窗体有错吗?为何程序老在关闭时出错
  • 急:在程序中动态加载 DLL 并显示其窗体,但程序关闭时总出错,Why?
  • 请高手指点:DLL中创建一个带ADOConnection组件窗体,为什么出错?
  • 为什么我在DLL中把窗体设成fsMDIChild时,调用出错,请高手指点。

关键词

  • c++ builder
  • 函数
  • 代码
  • 文件
  • cpp
  • dll
  • application
  • mydllclass
  • 窗体
  • dllmyform

得分解答快速导航

  • 帖主:voxforce

相关链接

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

广告也精彩

反馈

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