請問在 TCppWebBrowser 元件中 , 加入 MouseMoveEvent 的問題.. |
答題得分者是:GrandRURU
|
taylor2727
一般會員 發表:5 回覆:5 積分:2 註冊:2009-12-08 發送簡訊給我 |
各位大大......目前小弟正在製作一個瀏覽器 , 需要紀錄滑鼠瀏覽時所經過的游標位址...
但是在 TCppWebBrowser 元件中 , 本身並沒有 MouseMove的事件 , 所以小弟打算自訂一個滑鼠事件 , 不過一直出現錯誤 , 可以麻煩大大幫我看看是哪裡的問題嗎.... 謝謝各位. ... 謝謝 [code cpp] ****** 標投檔 .h ***** class TwebrowserMain : public TForm { private: TMouseMoveEvent FOnMouseMove; protected: __published: __property TMouseMoveEvent OnMouseMove2 = {read=FOnMouseMove, write=FOnMouseMove}; <== 這行一加入就出現錯誤訊息了 } extern PACKAGE TwebrowserMain *webrowserMain; [/code] [code cpp] ******* .CPP ***** TwebrowserMain *webrowserMain; void __fastcall TwebrowserMain::CppWebBrowser1DocumentComplete(TObject *Sender, LPDISPATCH pDisp, Variant *URL) { strLastNavigating = Variant(URL) ; comboBoxUrl->Text = strLastNavigating; CppWebBrowser1->OnMouseMove2=CppWebBrowser11MouseMove; /*但是在CppWebBrowser1中 , 根本就找不到 OnMouseMove2 這動作*/ } [/code] 錯誤訊息是 : Error in module webrowser_Main : Incorrect field declaration in class TwebrowserMain 謝謝 編輯記錄
taylor2727 重新編輯於 2009-12-08 22:26:01, 註解 無‧
taylor2727 重新編輯於 2009-12-08 22:28:22, 註解 無‧ taylor2727 重新編輯於 2009-12-08 22:31:30, 註解 無‧ taylor2727 重新編輯於 2009-12-08 22:37:38, 註解 無‧ taylor2727 重新編輯於 2009-12-08 22:51:31, 註解 無‧ |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
國外討論區有相關的資訊
不過是很冷門的語系,看嘸 來源:Отловить MouseMove над CppWebBrowser? [code cpp] // in hpp #ifndef MainH #define MainH //--------------------------------------------------------------------------- #include #include #include #include <Forms.hpp><br />#include "mshtml.h" #include "mshtmdid.h" #include "SHDocVw_OCX.h" #include #include //--------------------------------------------------------------------------- typedef void __fastcall (__closure *TOnMouseMove)(); //--------------------------------------------------------------------------- class THtmlEventSink : public IDispatch { protected: TOnMouseMove FOnMouseMove; public: THtmlEventSink() { m_cRef = 0; } ~THtmlEventSink() { /*ShowMessage("~THtmlEventSink()");*/} // trace it work HRESULT __stdcall QueryInterface(REFIID riid, void** ppvObject) { *ppvObject = NULL; if (IsEqualGUID(riid, IID_IUnknown)) *ppvObject = reinterpret_cast if (IsEqualGUID(riid, IID_IDispatch)) *ppvObject = reinterpret_cast if (*ppvObject) { ((IUnknown*)*ppvObject)->AddRef(); return S_OK; } else return E_NOINTERFACE; } DWORD __stdcall AddRef() { return InterlockedIncrement(&m_cRef); } DWORD __stdcall Release() { if (InterlockedDecrement(&m_cRef) == 0) { delete this; return 0; } return m_cRef; } STDMETHOD(GetTypeInfoCount)(unsigned int FAR* pctinfo) { return E_NOTIMPL; } STDMETHOD(GetTypeInfo)(unsigned int iTInfo, LCID lcid, ITypeInfo FAR* FAR* ppTInfo) { return E_NOTIMPL; } STDMETHOD(GetIDsOfNames)(REFIID riid, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, LCID lcid, DISPID FAR* rgDispId) { return S_OK; } STDMETHOD(Invoke)(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr) { if (FOnMouseMove != NULL) FOnMouseMove(); return S_OK; } public: __property TOnMouseMove OnMouseMove = {read = FOnMouseMove, write = FOnMouseMove}; protected: long m_cRef; }; //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TCppWebBrowser *CppWebBrowser1; TMemo *Memo1; TPanel *Panel1; TEdit *Edit1; TButton *Button1; void __fastcall Button1Click(TObject *Sender); void __fastcall CppWebBrowser1DocumentComplete(TObject *Sender, LPDISPATCH pDisp, TVariant *URL); void __fastcall CppWebBrowser1NavigateComplete2(TObject *Sender, LPDISPATCH pDisp, TVariant *URL); private: // User declarations void __fastcall OnMouseMove(); _di_IDispatch CurDispatch; public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif //in cpp #include #pragma hdrstop #include "Main.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "SHDocVw_OCX" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { CurDispatch = NULL; CppWebBrowser1->Navigate(WideString("http://www.codenet.ru")); } //--------------------------------------------------------------------------- void __fastcall TForm1::OnMouseMove() { long cx; long cy; TComInterface CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pDoc); TComInterface TComInterface pDoc->get_parentWindow( &pWin); pWin->get_event( &pEvent); if (pEvent) { pEvent->get_clientX( &cx); pEvent->get_clientY( &cy); } String Str; Str.printf("X = %d: Y = %d)", cx,cy); Memo1->Lines->Add( Str); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { CppWebBrowser1->Navigate(WideString(Edit1->Text)); } //--------------------------------------------------------------------------- void __fastcall TForm1::CppWebBrowser1DocumentComplete(TObject *Sender, LPDISPATCH pDisp, TVariant *URL) { if (pDisp == CurDispatch) { // the document is loaded, not just a frame CurDispatch = NULL; //clear the global variable IHTMLDocument2* pDoc; CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pDoc); THtmlEventSink* EventSink = new THtmlEventSink(); EventSink->OnMouseMove = OnMouseMove; VARIANT vIn; V_VT(&vIn) = VT_DISPATCH; V_DISPATCH(&vIn) = EventSink; // put onmousemove if(SUCCEEDED(pDoc->put_onmousemove( vIn ))) ;//ShowMessage("ConnectEvent: onmousemove"); pDoc->Release(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::CppWebBrowser1NavigateComplete2(TObject *Sender, LPDISPATCH pDisp, TVariant *URL) { if (!CurDispatch) CurDispatch = pDisp; // save for comparison } [/code] |
taylor2727
一般會員 發表:5 回覆:5 積分:2 註冊:2009-12-08 發送簡訊給我 |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
看不懂你在問什麼
什麼是「上面工具列」的位址 長什麼樣子呀? ===================引 用 taylor2727 文 章=================== 這次小弟..不只需要抓CppWebBroser視窗中的位址...也要抓上面工具列的位址...... 就等於是把瀏覽器最大化後 , 全部的位址的要抓到..才可以... |
taylor2727
一般會員 發表:5 回覆:5 積分:2 註冊:2009-12-08 發送簡訊給我 |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
taylor2727
一般會員 發表:5 回覆:5 積分:2 註冊:2009-12-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |