在Delphi中巧用WINDOWS 的API函式 (轉)

worldblog發表於2007-12-04
在Delphi中巧用WINDOWS 的API函式 (轉)[@more@]應用之一:中有MEMO,當使用應控制元件輸入內容或編輯時,如何確定游標當前的位置呢?這時就可以 中的EM_LINEFROMCHAR和EM_LINEINDEX訊息來確定MEMO控制元件中游標的當前行和列,具體呼叫方法的過程如下:

procedure TForm1.Button1Click(Sender: T);

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;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988067/,如需轉載,請註明出處,否則將追究法律責任。

相關文章