如何把一個按鈕映射到一個外部程式的表單上? |
答題得分者是:m8815010
|
jean2004
初階會員 發表:69 回覆:80 積分:39 註冊:2004-12-18 發送簡訊給我 |
|
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 各位先輩,我是一個BCB愛好者,最近迷戀用BCB操作外部程式,我現在可以隱藏和顯示記事本的按鈕,我現在想用Windows的API函數在記事本上添加一個按鈕,單擊後能執行指定的功能,但百思不得其解,因此寢室難安,請知道的前輩一定指教,要求有代碼,學生在此謝謝各位了,謝謝!jean2004你好: 這一題和這篇有點像: < href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=71942">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=71942 以一個記事本介面來說,它上面就3個元件了,一為menu、一為Edit、一為最下面的status bar,想要在上面加按鈕的話,大概只有加在menu或Edit上比較正常了! 我試著在Edit上加一個button並有自已的click事件,是可行的,精神同上述那篇中的內容,這裏我就不再贅述了,只是效果不如上述那篇好,可試需要再行加強之! 另外我試著加button進入menu中,其實這樣也就是加menuitem進入其menu中,發現是可以,但是這個menuitem的click事件一直加不進去,所以目前就只能加一個沒有功能的menuitem這樣而已! ~~ TForm1 *Form1; WNDPROC OldBtnWndProc; LRESULT CALLBACK BtnWndProc(HWND,UINT,WPARAM,LPARAM ); int i=0; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- LRESULT CALLBACK BtnWndProc(HWND hwnd,UINT Msg,WPARAM wParam,LPARAM lParam) { //if (hwnd==mybtn) { if (Msg==WM_LBUTTONDOWN) Form1->Caption=IntToStr( i); //} return CallWindowProc((FARPROC)OldBtnWndProc,hwnd,Msg,wParam,lParam); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { HWND hwnd=FindWindow(NULL,"未命名 - 記事本"); HMENU hmenu=GetMenu(hwnd); HMENU mymenu=CreateMenu(); AppendMenu(hmenu,MF_POPUP | MF_ENABLED | MF_STRING,(LONG)mymenu,"&我的測試(&T)"); HMENU smenu=GetSubMenu(hmenu,5); HMENU ssmenu=CreateMenu(); AppendMenu(smenu,MF_ENABLED | MF_STRING,(LONG)ssmenu,"Do it..."); SendMessage(hwnd,WM_PAINT,0,0); BringWindowToTop(hwnd); OldBtnWndProc=(WNDPROC)GetWindowLong((HWND)ssmenu,GWL_WNDPROC); //設定button的事件函式 if (OldBtnWndProc==NULL) ShowMessage("擷取default window函式失敗!"); if (SetWindowLong((HWND)ssmenu,GWL_WNDPROC,(LONG)BtnWndProc)==0) ShowMessage("設定window函式失敗!"); }操作方式就是先開一個空的記事本出來,然後用本範例新增一個menuitem,那記事本是handle值就先直接用findwindow來找,因為只是for test! 至於事件無法植入成功,目前還不是很確定原因,大概還要try一下.... 目前結果大致就到這而已,劣法,請參著! |
jean2004
初階會員 發表:69 回覆:80 積分:39 註冊:2004-12-18 發送簡訊給我 |
|
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |