取得前景視窗的鍵盤游標位置 |
缺席
|
twinstart
一般會員 發表:4 回覆:7 積分:17 註冊:2007-12-14 發送簡訊給我 |
我的程式是利用F9呼叫Form1,希望Form1出現的位置是在前景視窗(如記事本)鍵盤游標下方,
所以我利用GetWindowRect(Handle, &pos)取得前景視窗在螢幕上的座標位置, 再利用GetCaretPos(&pt)取得鍵盤游標位置, GetWindowRect可正確取得前景視窗的座標, 但是GetCaretPos取得的數值卻不會隨前景視窗鍵盤游標的位置改變, 每次取得的數值都是x=0, y=0。 請問要如何才能正確取得前景視窗的鍵盤游標位置呢? 謝謝。程式碼如下: [code cpp] Unit1.h RECT pos; POINT pt; HWND hTarg; char str1[30], str2[30]; void __fastcall MsgOcur(tagMSG &Msg, bool &Handled); Unit1.cpp void __fastcall TForm1::FormCreate(TObject *Sender) { RegisterHotKey(hTarg,89,NULL,VK_F9); Application->OnMessage = MsgOcur; } //--------------------------------------------------------------------------- void __fastcall TForm1::MsgOcur(tagMSG &Msg, bool &Handled) { if(Msg.message == WM_HOTKEY) { hTarg = GetForegroundWindow(); GetWindowRect(hTarg, &pos); GetCaretPos(&pt); Form1->Top = pos.top pt.y; Form1->Left = pos.left pt.x; SetForegroundWindow(Form1->Handle); sprintf(str1,"top=%d, left=%d",pos.top,pos.left); sprintf(str2,"x=%d, y=%d",pt.x,pt.y); Form1->Canvas->TextOutA(10,10,str1); Form1->Canvas->TextOutA(10,30,str2); } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { UnregisterHotKey(hTarg,89); } //--------------------------------------------------------------------------- [/code]
附加檔案:4764ba0826724_Q.rar
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |