關於Api創建窗體的事件問題. |
尚未結案
|
rainker
一般會員 發表:6 回覆:1 積分:1 註冊:2007-10-09 發送簡訊給我 |
我用Api創建一窗體,並創建一個Edit. 但怎麼寫出EDIT的事件過程(Event)? 如:OnkeyDown這個事件?. 非Api的窗體事件過程是: [code delphi] procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); [/code] 那Api該怎麼寫才能返回:鍵盤輸入的值?.我嘗試過創建消息循環.Wm_Command,但是此函數會返回鼠標按下,鍵盤按下的實件.Wm_Keydown並不能返回鍵盤按下的事件. 當然我不是想返回是否按下了鍵盤這個事件,而是想返回鍵盤按下時,並取得它的按下的值. 舉個例子,按下鍵盤後,會自動將鍵盤的值sendmenssage到記事本中.?該怎麼操作?. 非Api的代碼: [code delphi] procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var vHandle: Integer; begin vHandle := FindWindow('Notepad', nil); if vHandle = 0 then Exit; vHandle := FindWindowEx(vHandle, 0, 'Edit', nil); if vHandle = 0 then Exit; SendMessage(vHandle, WM_CHAR, Ord(Key), 0); end; [/code] 但是我的Edit是Api創建的.就難操作了.
附API創建窗體代碼: [code delphi] procedure MainCreate; begin attstart:=true; hMutex:=createmutex(nil,true,'Bome2001'); releasemutex(hMutex); end; function WindowProc(hWnd,Msg,wParam,lParam:integer):Longint; stdcall; begin Result:=DefWindowProc(hWnd,Msg,wParam,lParam); case Msg of WM_COMMAND: if lParam= hEditEmail then showmessage('ok'); // 這個是按下鼠標或者鍵盤都會彈出,而且無法攔截它輸入的信息。 end; end; function CreateEdit(name:pchar;x1,y1,x2,y2:integer):hwnd; begin Result:=CreateWindowEx(WS_EX_CLIENTEDGE,'Edit',name,WS_VISIBLE or WS_CHILD or ES_LEFT or ES_AUTOHSCROLL,x1,y1,x2,y2,Handle,0,hInst,nil); end; function CreateMain(name:pchar;x1,y1,x2,y2:integer):hwnd; begin hInst:=GetModuleHandle(nil); with wClass do begin Style:= CS_CLASSDC or CS_PARENTDC; hIcon:= LoadIcon(hInst,'MAINICON'); lpfnWndProc:= @WindowProc; hInstance:= hInst; hbrBackground:= COLOR_BTNFACE 1; lpszClassName:= 'MainClass'; hCursor:= LoadCursor(0,IDC_ARROW); end; RegisterClass(wClass); Result:=CreateWindow(wClass.lpszClassName,name,WS_OVERLAPPEDWINDOW or WS_VISIBLE,x1,y1,x2,y2,0,0,hInst,nil); end; begin handle:=CreateMain(exename,mrect.left,mrect.top,806,625); hEditEmail:=CreateEdit('',358,258,94,14); while(GetMessage(Msg,Handle,0,0))do begin TranslateMessage(Msg); DispatchMessage(Msg); end; end. [/code] |
紫電靑霜
一般會員 發表:2 回覆:9 積分:2 註冊:2008-05-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |