CnPack Forum


 
Subject: 新手学习体会连载二
springkang
新警察
Rank: 1



UID 316
Digest Posts 0
Credits 7
Posts 7
点点分 7
Reading Access 10
Registered 2004-2-13
Status Offline
Post at 2004-2-23 09:21  Profile | Blog | P.M. 
新手学习体会连载二

一晃又一个星期去了,在yygw大哥和众兄弟的支持下,我再来一关于cnpack框架方面的体会,很短,见笑了哦!(哪来的鸡蛋,包子。。。。#¥%^##@
由于偶很懒,几天没看cnpack源码了,主要是对cnpack的框架是如何设计和组织的还一头雾水,不知该如何看起,太多源码了,打开来看了一下,头晕晕的,又关上了。昨天硬着头皮看了一下,总算是有点眉目了,有些地方还没理解清楚也不管了,先发表弄点稿费花花。。。嘻嘻。
首先我们打开源文件,位于source\wizard下的cnwizard_d7.dpr。此时显示:
library CnWizards_D7;

uses
  ShareMem,
  CnWizDllEntry in 'Framework\CnWizDllEntry.pas',        //这是入口点,调用    cnwizards.pas
  CnBaseWizard in 'Framework\CnBaseWizard.pas',
  CnWizards in 'Framework\CnWizards.pas',    //这才是关键
  CnWizMultiLang in 'Framework\CnWizMultiLang.pas' {CnTranslateFrm},
  CnWizUtils in 'Utils\CnWizUtils.pas',
  CnWizAboutFrm in 'Framework\CnWizAboutFrm.pas' {CnWizAboutForm},
  CnWizCommentFrm in 'Framework\CnWizCommentFrm.pas' {CnWizCommentForm},
  CnWizConfigFrm in 'Framework\CnWizConfigFrm.pas' {CnWizConfigForm},
  CnWizConsts in 'Framework\CnWizConsts.pas',
.........
........
.......
.
.
begin
end.
这倒底是个什么文件格式呢?我们知道cnpack是通过dll文件来执行的,好,我们新建一个dll wizard,看到了没,其格式就是:
library Project1;

uses
  SysUtils,
  Classes;

{$R *.res}

begin
end.
至此,我们很容易理解了,cnpack就是通过建立一个dll主文件,然后再在里面调用(uses)其他源文件模块如:'Framework\CnWizDllEntry.pas'、'Framework\CnBaseWizard.pas',等,从而将各个模块连成一个整体的。接下来我们看看这些源码文件是做些什么用的呢?
因为cnpack开发组的编码很规范,所以我们很容易从文件名称上看出来是做什么用的。首先我们看第一个'Framework\CnWizDllEntry.pas',这个名称很容易让人联想到是dll文件的入口点。打开来看看,呵呵,果然不出所料,里面的注解写得很清楚了。我们一行行的往下看,// 专家dll初始化入口函数function InitWizard(const BorlandIDEServices: IBorlandIDEServices;
  RegisterProc: TWizardRegisterProc;
  var Terminate: TWizardTerminateProc): Boolean; stdcall;
其中IBorlandIDEServices,TWizardRegisterProc,TWizardTerminateProc是在ToolsAP中声明的(用你的鼠标放上去就会有提示的)。按住CTRL跟踪到ToolsAPI里面看看到底是如何声明的。也可以有MSDN中查看。(~~汗,我现在也还不知道是做什么用的,知道的说一下哦)
       再往下看,快到文件底端时,CnWizardMgr := TCnWizardMgr.Create;
估计是创建一个cnpack实例了,在TCnWizardMgr按CTRL跟入,发现是打开了cnwizards.pas,哈哈,里面的注解已经讲得清楚了,我就不多说了,这个源文件可是关键啊。'Framework\CnBaseWizard.pas'之类的文件也是重要的,
      由于时间有限,我就没有深入分析下去了。但我已经打开了分析之门,以后再看源码时就不会再有跟我一样一头雾水的感觉了。
      文章很短很浅,浪费各位的时间了,关于后续跟踪,咱们以后再见




我是一匹来自南方的狼!!!
Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2004-2-24 08:07  Profile | Site | Blog | P.M. 
建议springkang朋友先看一下源码包中:cnpack\Doc\Design\Wizard 下面关于专家包框架的几份文档,对专家结构可以有个基本的认识。

另外,你现在看的这个专家目录结构不太规范,建议从 CVS 中下载最新的源码,开发组正在做专家框架升级,在 cnpack\Source\Wizards 目录下的是整理过的源码,看起来可能会容易一些:)




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
 




All times are GMT++8, the time now is 2024-11-22 06:18

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.007905 second(s), 8 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP