如何透過CppWebBrowser拖曳移動表單 |
答題得分者是:taishyang
|
tyzzccn1
一般會員 發表:2 回覆:4 積分:1 註冊:2008-11-24 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
試試下面的code
.h file class TForm1 : public TForm { __published: // IDE-managed Components TCppWebBrowser *CppWebBrowser1; private: // User declarations void __fastcall WebBrowserWndProc(TMessage& Message); TWndMethod OldWebBrowserWndProc; public: // User declarations __fastcall TForm1(TComponent* Owner); }; .cpp file //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { OldWebBrowserWndProc = CppWebBrowser1->WindowProc; CppWebBrowser1->WindowProc = WebBrowserWndProc; } //--------------------------------------------------------------------------- void __fastcall TForm1::WebBrowserWndProc(TMessage& Message) { switch (Message.Msg){ case WM_MOUSEMOVE:{ if(Message.WParam == MK_LBUTTON){ ReleaseCapture(); Perform(WM_NCLBUTTONDOWN, HTCAPTION, NULL); } }break; } OldWebBrowserWndProc(Message); }
編輯記錄
taishyang 重新編輯於 2008-11-24 11:31:34, 註解 無‧
|
tyzzccn1
一般會員 發表:2 回覆:4 積分:1 註冊:2008-11-24 發送簡訊給我 |
感謝大大的拔刀相助.........不過.............根據小弟測試的結果......如果CppWebrowser沒有用Navigate方法瀏覽網頁的話(例如CppWebBrowser1->Navigate(L"http://www.pchome.com.tw");)的話是可以拖曳表單沒錯,反之如果有的話............就失效了說........!_!
------
With Best Regards |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
應該有更好的方式,小弟目前想的方式如下:
.h class TForm1 : public TForm { __published: // IDE-managed Components TCppWebBrowser *CppWebBrowser1; void __fastcall FormShow(TObject *Sender); private: // User declarations void __fastcall IEMessageHandler(tagMSG &Msg, bool &Handled); public: // User declarations __fastcall TForm1(TComponent* Owner); }; .cpp TPoint ptCursor; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Application->IEMessageHandler; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormShow(TObject *Sender) { CppWebBrowser1->Navigate(L"http://delphi.ktop.com.tw/board.php"); } //--------------------------------------------------------------------------- void __fastcall TForm1::IEMessageHandler(tagMSG &Msg, bool &Handled) { GetCursorPos(&ptCursor); ptCursor = ScreenToClient(ptCursor); if (ptCursor.x < Form1->Width-25 && ptCursor.y < Form1->Height-25){ //避開scrollbar,這地方要加強 ReleaseCapture(); Perform(WM_NCLBUTTONDOWN, HTCAPTION, NULL); } }
編輯記錄
taishyang 重新編輯於 2008-11-24 15:07:15, 註解 無‧
|
tyzzccn1
一般會員 發表:2 回覆:4 積分:1 註冊:2008-11-24 發送簡訊給我 |
大大的回覆速度實在是太驚人了.........根據小弟的測試結果.....已經可以正確拖曳表單......但是有一點小小的問題....連滑鼠點選超聯結的功能都消失了.....:P
小弟稍微修改了一下大大的程式碼(借花獻佛稍微融合大大的第一版跟第二版) if (ptCursor.x < this->Width-25 && ptCursor.y < this->Height-25 && Msg.message == WM_MOUSEMOVE){ //避開scrollbar,這地方要加強 if(Msg.wParam == MK_LBUTTON) { ReleaseCapture(); Perform(WM_NCLBUTTONDOWN, HTCAPTION, NULL); } } 這樣就不會太趕盡殺絕...:P.......但是還是有不足之處.......假如網頁中有TextBox,那在該TextBox中的滑鼠拖曳選取文字功能也一樣消失,原因應該跟大大講的卷軸問題是同一個...... 這一點不知道大大有沒有想法可以改善呢?!
------
With Best Regards
編輯記錄
tyzzccn1 重新編輯於 2008-11-24 16:20:57, 註解 無‧
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
tyzzccn1
一般會員 發表:2 回覆:4 積分:1 註冊:2008-11-24 發送簡訊給我 |
|
xbx
一般會員 發表:0 回覆:10 積分:12 註冊:2003-08-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |