Yanghn Notes

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            10 Posts :: 10 Stories :: 2 Comments :: 0 Trackbacks
          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;
          
          var
            Form1: TForm1;
          
          //MB 函數的聲明:
          function MB(hWnd: HWND; lpText, lpCaption: PChar; uType: UINT): Integer; stdcall;
          
          implementation
          
          {$R *.dfm}
          {調用外部 DLL 中的函數,譬如調用系統 user32.dll 中的 MessageBoxA}
          //function MB(hWnd: HWND; lpText, lpCaption: PChar; uType: UINT): Integer;
          //  stdcall; external user32 name 'MessageBoxA';
          
          {其中 user32 是 Delphi 定義的常量 'user32.dll',可以直接寫成:}
          //function MB(hWnd: HWND; lpText, lpCaption: PChar; uType: UINT): Integer;
          //  stdcall; external 'user32.dll' name 'MessageBoxA';
          
          {name 后面說明函數的真實名字}
          {external 子句說明單元載入時就加載函數,也就是早綁定;如果晚綁定需要用 LoadLibrary}
          {stdcall 指令表示參數傳遞是從右到左(Pascal則反之),不通過CPU寄存器傳遞}
          
          {4個參數的數據類型可以使用對應的 Delphi 數據類型,譬如:}
          //function MB(hWnd: LongWord; lpText, lpCaption: PChar; uType: LongWord): Integer;
          //  stdcall; external 'user32.dll' name 'MessageBoxA';
          
          {或者是:}
          //function MB(hWnd: Cardinal; lpText, lpCaption: PChar; uType: Cardinal): Integer;
          //  stdcall; external 'user32.dll' name 'MessageBoxA';
          
          {如果函數在此單元聲明后,需要給其他單元調用,需要先在 interface 區聲明:}
          //function MB(hWnd: Cardinal; lpText, lpCaption: PChar; uType: Cardinal): Integer;
          //  stdcall;
          {本例已經這樣做了,如果要測試其他幾種情況,需要先注釋掉它}
          {然后在 implementation 區,說明函數的來源:}
          function MB; external 'user32.dll' name 'MessageBoxA';
          
          //調用測試:
          procedure TForm1.Button1Click(Sender: TObject);
          var
            t,b:  PChar;
          begin
            t := '標題';
            b := '內容';
            MB(0,b,t,0);
          end;
          
          end.
          posted on 2010-05-10 10:09 小海 閱讀(191) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 桃园市| 连南| 酒泉市| 雷波县| 扎囊县| 灌南县| 莲花县| 梁河县| 仪征市| 青铜峡市| 大竹县| 山东省| 长春市| 宁波市| 疏勒县| 荆门市| 绿春县| 永德县| 朔州市| 徐水县| 新安县| 郧西县| 菏泽市| 柘城县| 漯河市| 万年县| 徐闻县| 汤阴县| 涟水县| 礼泉县| 中方县| 四平市| 九龙县| 明溪县| 吴堡县| 济南市| 革吉县| 临海市| 红原县| 石林| 德保县|