程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 在Delphi中巧用WINDOWS的API函數

在Delphi中巧用WINDOWS的API函數

編輯:Delphi

應用之一:Delphi中有控件MEMO,當使用應控件輸入內容或編輯時,如何確定光標當前的位置呢?這時就可以調用WINDOWS API中的EM_LINEFROMCHAR和EM_LINEINDEX消息來確定MEMO控件中光標的當前行和列,具體調用方法的過程如下:

procedure TForm1.Button1Click(Sender: TObject);

var

LineNum:longint;

CharsBeforeLine:longint;

begin

LineNum := SendMessage(Memo1.Handle,EM_LINEFROMCHAR,

Memo1.SelStart,0);

CharsBeforeLine:=SendMessage(Memo1.Handle,EM_LINEINDEX,

LineNum,0);

Label1.Caption:=Line: +IntToStr(LineNum + 1);

Label2.Caption:=Position: +IntToStr((Memo1.SelStart -

CharsBeforeLine)+1);

end;

應用之二:Delphi中的控件TlistBox沒有提供水平滾動條,如果想添加一個水平流動條,其實也很簡單,我們只需使用API函數給TListBox 發送一個LB_SetHorizontalExtent消息就行了。

源代碼如下:

SendMessage(ListBox1.Handle,LB_SetHorizontalExtent,2000,

longint(0));

應用之三:當我們需要獲取所運行程序的計算機的分辨率時,有二種方法:①可以通過訪問Delphi提供的SCREEN全局變量,即SCREEN.WIDTH和SCREEN.HEIGHT以像素點給出屏幕的分辨率。②利用WINDOWS的API函數GetDeviceCaps()來得到所用顯示器的分辨率,代碼如下:

Application.Initialize;

Application.CreateForm(TForm1, Form1);

CASE GetDeviceCaps(GetDC(Form1.Handle), HORZRES) of

640 : //對640*480分辨率進行處理的代碼;

800 : //對800*600分辨率進行處理的代碼;

1024: //對1024*768分辨率進行處理的代碼;

1280: //對1280*1024分辨率進行處理的代碼;

END;

Application.Run;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved