Delphi接口

我的程序1,可以运行
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  procedure ConnFilesM(pw,user,db,computer:string) stdcall;external 'bin\ConnDBDll.dll';

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   ConnFilesM('a','a','a','a');
end;

end.

 

http://bbs.csdn.net/topics/60297694

----------==========

 

http://hi.baidu.com/xingfupingguo/item/8735f87def880a28d6a89c20

 

定义常量可以在type上 ,变量可以在 private public 或者protect里定义。或者在implement上的var里定义全局变量搜索

 

 

unit PubSQL;

interface
uses Windows, Forms, PubParaLib, SysUtils, Dialogs, DB, ADODB, StdCtrls, PubDataModul;

type
TGetDataSet = procedure(var ADOQuery:TADOQuery; SQL:String); Stdcall;
TGetTextData = function(ID:Integer; StrList:Array of String):String; Stdcall;
TGetSQLText = Function(Sn, ID:Integer): String; Stdcall;
TStratDataList = Procedure(ADOConn: TADOConnection; UserName: String); Stdcall;

function _CuTextData(ID:Integer; StrList:Array of String):String;
function _CuSQLData(SQLType: TCuSQLServerType; ID: Integer): string;

procedure GetNewDataSet(var ADOQuery:TADOQuery; SQL:String);
function GetNewTextData(ID:Integer; StrList:Array of String):String;
function GetNewSQLText(Sn, ID:Integer):String;
Procedure OpenTextDataList;

var
TextHandle:THandle;

implementation

就是定义一个类型,跟字符串,整型等等一样,都是一种类型。不过它就一个函数类型,多用于属性。常看到的,例如你看OnClick事件,它是在TControl里这样定义的
property OnClick: TNotifyEvent read FOnClick write FOnClick stored IsOnClickStored;
其中 TNotifyEvent 是这样定义的
TNotifyEvent = procedure(Sender: TObject) of object;
你在生成这个事件的时候,可以看到它会有一个OnxxxxClick,它的定义就是
procedure OnxxxxClick(Sender: TObject) ;
然后就这个事件就是跟那个OnClick关联起来的。只不过这里的是过程,而你提到的是函数。但其实是一样的。

----------==

 

源代码

procedure TfrmMain.SendCompass(Value : Double);
var
  ds:TCopyDataStruct;   
  hd:THandle; ************************* 1
  S: string;
begin
  S := FloatToStr(Value);
  ds.cbData:=length(S)+1;
  GetMem(ds.lpData,ds.cbData);   
  StrCopy(ds.lpData,PChar(S));
  hd:=FindWindow搜索(nil,'Compass');   *********************************2
  if hd<>0 then*********************************3
    SendMessage(hd,WM_COPYDATA,frmMain.Handle,Cardinal(@ds)); 
  FreeMem(ds.lpData);

该程序中1处 THandle 是什么类型 3处 为什么可以对他进行是否为0的条件判断?
如果是判定FindWindow(nil,'Compass')>0 又是什么意思? 

findwindow()是起什么功能的 ?

 

handle它就是个长整型,可以跟integer比较一下,
FindWindow(nil,'Compass')>0 说明能找到这个窗口的句柄,找不到则返回空/0,

FindWindow只是查找窗口,但是找到的窗口并不一定是当前窗口。

一个窗口有2个部分组成,1个是窗口的类名,一个是窗口的窗口名称。通常情况下,我们自己做的窗口类名和窗口名称都是知道的,因为是自己给它们加上去的。但对于模板窗口,我们一般是不知道它的类名的,但它的窗口名称是可以知道的,就是显示在标题栏中的标题,就是它的窗口名称。 
当有2个窗口在桌面上时,一个窗口有个编辑框,而另一个没有编辑框。当我们想要用那个有编辑框的窗口时,必须先得到那个窗口的句柄,FindWindow就是帮助我们取得这个窗口句柄。 
我们可以任意指定FindWindow中两个参数的其中一个,或同时2个都指定来找到那个带有编辑框的窗口,然后FindWindow就会返回这个窗口的句柄(hwnd)。 
窗口类名好比人的小名,窗口标题名称好比是人的大名。 
我们一般知道一个人的大名,但不太清楚他的小名如对话框的类名#32776。FindWindow给了我们两个参数,以便我们在不知道一个人小名的情况下,可以通过大名来找到该人。

 


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值