浏览器的表现形式丰富,适度的使用能使界面增色不少,介绍一下CB6中TCppWebBrowser控件的一些用法 分开说比较麻烦,从以前的工程里找了一个完整网页贴过来
网页: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>免费送歌</title> <style type="text/css"> input {border:1px solid #000000} <!-- --> </style> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} }
function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; }
function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; }
function MM_swapImage() { //v3.0 var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} } //--> </script> <style type="text/css"> <!-- td { font-family: "Arial"; font-size: 12px; color: #990000; cursor: default; } .jiben { font-family: "Arial"; font-size: 12px; font-weight: bold; color: #990000; cursor: default; } --> </style> </head>
<body leftmargin="0" topmargin="0" onLoad="MM_preloadImages('image/K-17a.jpg','image/K-11a.jpg')"> <table width="315" height="144" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="22"><table width="314" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="6"><img src="image/F-1.jpg" width="4" height="25"></td> <td> <div align="left"> <table width="310" border="0" align="right" cellpadding="0" cellspacing="0" background="image/14A.jpg" id="moveform"> <tr> <td valign="middle" 4>8751免费点歌登陆</td> <td width="195"><div align="right"> <table width="64" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="29%"><div align="right"><img src="image/A1.jpg" alt="最小化" name="minform" width="20" height="25" id="Image1" onMouseOver="MM_swapImage('Image1','','image/1A.jpg',1)" onMouseOut="MM_swapImgRestore()"></div></td> <td width="32%"><div align="right"><img src="image/A2.jpg" width="20" height="25"></div></td> <td width="27%"><div align="right"><img src="image/A3.jpg" alt="关闭" name="closeform" width="19" height="25" id="Image2" onMouseOver="MM_swapImage('Image2','','image/3A.jpg',1)" onMouseOut="MM_swapImgRestore()"></div></td> <td width="12%"><div align="right"></div></td> </tr> </table> </div></td> </tr> </table> </div></td> </tr> </table></td> </tr> <tr> <td valign="top"><table width="315" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="10"><img src="image/L-1.jpg" width="4" height="198"></td> <td width="260" valign="top"><table width="304" border="0" cellpadding="0" cellspacing="0" background="image/K-9.jpg"> <tr> <td colspan="4"><table width="305" height="141" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="141" valign="top"> <table width="201" height="132" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td height="16" colspan="2"> </td> </tr> <tr> <td colspan="2" ><div align="center" class="jiben">基 本 信 息</div></td> </tr> <tr > <td width="81">手机号码:</td> <td width="120"> <input name="MbNum" type="text" id="MbNum" size="15"></td> </tr> <tr > <td>姓名:</td> <td> <input name="Name" type="text" id="Name" size="15"></td> </tr> <tr > <td>8751ID:</td> <td> <input name="ID" type="text" id="ID" size="15"></td> </tr> <tr > <td>备注信息:</td> <td> <input name="MemTextArea" type="text" id="MemTextArea" size="15"></td> </tr> </table></td> </tr> </table></td> </tr> <tr> <td width="83" height="38"> </td> <td width="84"><a href="#"><img src="image/K-17.jpg" name="Ok" width="55" height="19" border="0" id="Ok" onMouseOver="MM_swapImage('Ok','','image/K-17a.jpg',1)" onMouseOut="MM_swapImgRestore()"></a></td> <td width="79"> <div align="center"><a href="#"><img src="image/K-11.jpg" name="Cancel" width="55" height="19" border="0" id="Cancel" onMouseOver="MM_swapImage('Cancel','','image/K-11a.jpg',1)" onMouseOut="MM_swapImgRestore()"></a></div></td> <td width="59"> <div align="left"></div></td> </tr> <tr> <td colspan="4"> </td> </tr> <tr> <td height="4" colspan="4"><img src="image/K-8.jpg" width="306" height="4"></td> </tr> </table></td> <td width="45"><img src="image/K-7.jpg" width="4" height="198"></td> </tr> </table></td> </tr> </table> <div align="right"></div> </body> </html>
.h #ifndef AddFriendFormH #define AddFriendFormH //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include "SHDocVw_OCX.h" #include <OleCtrls.hpp> //--------------------------------------------------------------------------- class TfrmAddFriend : public TForm { __published: // IDE-managed Components TCppWebBrowser *CppWebBrowserAddFriend; void __fastcall FormCreate(TObject *Sender); void __fastcall CppWebBrowserAddFriendDocumentComplete(TObject *Sender, LPDISPATCH pDisp, Variant *URL); void __fastcall FormDestroy(TObject *Sender); private: void MoveFormEvt(DISPID id, VARIANT* pVarResult); void MoveForm(void); void MaskEvt(DISPID id, VARIANT* pVarResult); void SetBrowserStyle(void); void CancelEvt(void); void ReleaseHook(void); void AddFriendOnClick(DISPID id, VARIANT* pVarResult); AnsiString GetInputValue(AnsiString itemname); void OnKeyPressEvt(DISPID id, VARIANT* pVarResult); void SetFocusInput(AnsiString itemname); void PutInputValue(AnsiString itemname, AnsiString value); // User declarations public: // User declarations AnsiString MbNum; AnsiString FriendName; AnsiString ID8751; AnsiString Info; __fastcall TfrmAddFriend(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TfrmAddFriend *frmAddFriend; //--------------------------------------------------------------------------- #endif
.cpp //---------------------------------------------------------------------------
#include <vcl.h> #pragma hdrstop
#include "AddFriendForm.h" #include "GlobalFunc.h" #include "GlobalVar.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "SHDocVw_OCX" #pragma resource "*.dfm" TfrmAddFriend *frmAddFriend; //--------------------------------------------------------------------------- __fastcall TfrmAddFriend::TfrmAddFriend(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TfrmAddFriend::FormCreate(TObject *Sender) { this->CppWebBrowserAddFriend->HandleNeeded(); this->CppWebBrowserAddFriend->Navigate(WideString(GetResPath("AddFriends.htm")),NULL,NULL,NULL,NULL);
CutFormRgn(Handle,316,225); } //--------------------------------------------------------------------------- void TfrmAddFriend::MoveFormEvt(DISPID id, VARIANT* pVarResult) { //TODO: Add your source code here _di_IDispatch disp; System::DelphiInterface<IHTMLDocument2> htmldoc2; System::DelphiInterface<IHTMLWindow2> htmlwnd2; System::DelphiInterface<IHTMLEventObj> htmlevt; System::DelphiInterface<IHTMLElement> htmlelem;
disp = this->CppWebBrowserAddFriend->Document; if(!disp) return;
htmldoc2 = disp; htmldoc2->get_parentWindow(&htmlwnd2); htmlwnd2->get_event(&htmlevt);
htmlevt->get_srcElement(&htmlelem);
WideString _tag;
htmlelem->get_tagName(&_tag);
long btn,_x,_y; htmlevt->get_button(&btn); htmlevt->get_screenX(&_x); htmlevt->get_screenY(&_y);
if(_tag == WideString("TD") && btn == 1) { ::ReleaseCapture(); ::SendMessage(Handle,WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(_x,_y)); } pVarResult->vt = VT_BOOL; pVarResult->boolVal = FALSE; }
void TfrmAddFriend::MoveForm(void) { //TODO: Add your source code here _di_IDispatch disp; System::DelphiInterface<IHTMLDocument2> htmldoc2; System::DelphiInterface<IHTMLElementCollection> htmlelemcoll; System::DelphiInterface<IHTMLElement> htmlelem;
disp = this->CppWebBrowserAddFriend->Document; if(!disp) return;
htmldoc2 = disp; htmldoc2->get_all(&htmlelemcoll); htmlelemcoll->item(TVariant("moveform"),TVariant(0),&disp); htmlelem = disp;
TVariant OnfrmMosuseDown; OnfrmMosuseDown = CFunctionObject<TfrmAddFriend>::CreateEventFunctionObject(this,&TfrmAddFriend::MoveFormEvt,0); htmlelem->put_onmousedown(OnfrmMosuseDown); }
void TfrmAddFriend::MaskEvt(DISPID id, VARIANT* pVarResult) { //TODO: Add your source code here _di_IDispatch disp; System::DelphiInterface<IHTMLDocument2> htmldoc2; System::DelphiInterface<IHTMLWindow2> htmlwnd2; System::DelphiInterface<IHTMLEventObj> htmlevt; System::DelphiInterface<IHTMLElement> htmlelem;
disp = this->CppWebBrowserAddFriend->Document; if(!disp) return;
htmldoc2 = disp; htmldoc2->get_parentWindow(&htmlwnd2); htmlwnd2->get_event(&htmlevt);
htmlevt->get_srcElement(&htmlelem);
WideString _tag;
htmlelem->get_tagName(&_tag); if(_tag == WideString("INPUT")) return;
pVarResult->vt = VT_BOOL; pVarResult->boolVal = FALSE; }
void TfrmAddFriend::CancelEvt(void) { //TODO: Add your source code here _di_IDispatch disp; System::DelphiInterface<IHTMLDocument2> htmldoc2; System::DelphiInterface<IHTMLElement> htmlelem; System::DelphiInterface<IHTMLElement2> htmlelem2;
disp = this->CppWebBrowserAddFriend->Document; if(!disp) return;
htmldoc2 = disp; htmldoc2->get_body(&htmlelem); htmlelem2 = htmlelem;
TVariant vt; vt = CFunctionObject<TfrmAddFriend>::CreateEventFunctionObject(this,&TfrmAddFriend::MaskEvt,0); htmlelem->put_onselectstart(vt); htmlelem2->put_oncontextmenu(vt); }
void TfrmAddFriend::SetBrowserStyle(void) { //TODO: Add your source code here _di_IDispatch disp; System::DelphiInterface<IHTMLDocument2> htmldoc2; System::DelphiInterface<IHTMLElement> htmlelem; System::DelphiInterface<IHTMLBodyElement> htmlbody; System::DelphiInterface<IHTMLStyle> htmlsty;
disp = this->CppWebBrowserAddFriend->Document; if(!disp) return;
htmldoc2 = disp; htmldoc2->get_body(&htmlelem); htmlbody = htmlelem; htmlbody->put_scroll(WideString("no")); htmlelem->get_style(&htmlsty); htmlsty->put_border(WideString("none")); }
void TfrmAddFriend::ReleaseHook(void) { //TODO: Add your source code here _di_IDispatch disp; System::DelphiInterface<IHTMLDocument2> htmldoc2; System::DelphiInterface<IHTMLElementCollection> htmlelemcoll; System::DelphiInterface<IHTMLElement> htmlelem; System::DelphiInterface<IHTMLElement2> htmlelem2;
disp = this->CppWebBrowserAddFriend->Document; if(!disp) return;
htmldoc2 = disp; htmldoc2->get_all(&htmlelemcoll); htmlelemcoll->item(TVariant("moveform"),TVariant(0),&disp);
htmlelem = disp;
VARIANT varNull; varNull.vt = VT_NULL; htmlelem->put_onmousedown(varNull);
htmldoc2->get_body(&htmlelem); htmlelem->put_onselectstart(varNull); htmlelem->put_onclick(varNull); htmlelem->put_onkeypress(varNull);
htmlelem2 = htmlelem; htmlelem2->put_oncontextmenu(varNull); }
AnsiString TfrmAddFriend::GetInputValue(AnsiString itemname) { //TODO: Add your source code here AnsiString rtn = "";
_di_IDispatch disp; System::DelphiInterface<IHTMLDocument2> htmldoc2; System::DelphiInterface<IHTMLElement> htmlelem; System::DelphiInterface<IHTMLElementCollection> htmlelemcoll;
disp = this->CppWebBrowserAddFriend->Document; if(!disp) return rtn;
htmldoc2 = disp; htmldoc2->get_all(&htmlelemcoll); htmlelemcoll->item(TVariant(itemname),TVariant(0),&disp); htmlelem = disp; TVariant val; htmlelem->getAttribute(WideString("value"),0,&val); rtn = val.bstrVal;
return rtn; }
void TfrmAddFriend::PutInputValue(AnsiString itemname, AnsiString value) { //TODO: Add your source code here _di_IDispatch disp; System::DelphiInterface<IHTMLDocument2> htmldoc2; System::DelphiInterface<IHTMLElement> htmlelem; System::DelphiInterface<IHTMLElementCollection> htmlelemcoll;
disp = this->CppWebBrowserAddFriend->Document; if(!disp) return;
htmldoc2 = disp;
htmldoc2->get_all(&htmlelemcoll); htmlelemcoll->item(TVariant(itemname),TVariant(0),&disp); htmlelem = disp; htmlelem->setAttribute(WideString("value"),TVariant(value),0); }
void TfrmAddFriend::AddFriendOnClick(DISPID id, VARIANT* pVarResult) { //TODO: Add your source code here _di_IDispatch disp; System::DelphiInterface<IHTMLDocument2> htmldoc2; System::DelphiInterface<IHTMLWindow2> htmlwnd2; System::DelphiInterface<IHTMLEventObj> htmlevt; System::DelphiInterface<IHTMLElement> htmlelem;
disp = this->CppWebBrowserAddFriend->Document; if(!disp) return;
htmldoc2 = disp; htmldoc2->get_parentWindow(&htmlwnd2); htmlwnd2->get_event(&htmlevt); htmlevt->get_srcElement(&htmlelem);
WideString ws; bool flag; ws.SetLength(64); htmlelem->get_tagName(&ws); if(ws == WideString("IMG")) { TVariant val; htmlelem->getAttribute(WideString("name"),0,&val);
AnsiString str; str = val.bstrVal; if(str == WideString("closeform")) { this->Close(); } else if(str == WideString("minform")) { this->WindowState = wsMinimized ; } else if(str == WideString("Ok")) { this->MbNum = this->GetInputValue("MbNum"); this->FriendName = this->GetInputValue("Name"); this->ID8751 = this->GetInputValue("ID"); this->Info = this->GetInputValue("MemTextArea"); this->ModalResult = mrOk; this->Close(); } else if(str == WideString("Cancel")) { this->ModalResult = mrCancel; this->Close(); } } pVarResult->vt = VT_BOOL; pVarResult->boolVal = FALSE; } //--------------------------------------------------------------------------- void __fastcall TfrmAddFriend::CppWebBrowserAddFriendDocumentComplete( TObject *Sender, LPDISPATCH pDisp, Variant *URL) { this->CancelEvt(); this->SetBrowserStyle(); this->MoveForm();
_di_IDispatch disp; System::DelphiInterface<IHTMLDocument2> htmldoc2; System::DelphiInterface<IHTMLElement> htmlelem;
disp = this->CppWebBrowserAddFriend->Document; if(!disp) return;
htmldoc2 = disp; htmldoc2->get_body(&htmlelem);
TVariant vt; vt = CFunctionObject<TfrmAddFriend>::CreateEventFunctionObject(this,&TfrmAddFriend::AddFriendOnClick,0); htmlelem->put_onclick(vt);
vt = CFunctionObject<TfrmAddFriend>::CreateEventFunctionObject(this,&TfrmAddFriend::OnKeyPressEvt,0); htmlelem->put_onkeypress(vt);
this->SetFocusInput("MbNum"); } //--------------------------------------------------------------------------- void TfrmAddFriend::OnKeyPressEvt(DISPID id, VARIANT* pVarResult) { //TODO: Add your source code here _di_IDispatch disp; System::DelphiInterface<IHTMLDocument2> htmldoc2; System::DelphiInterface<IHTMLWindow2> htmlwnd2; System::DelphiInterface<IHTMLEventObj> htmlevt;
disp = this->CppWebBrowserAddFriend->Document; if(!disp) return; htmldoc2 = disp; htmldoc2->get_parentWindow(&htmlwnd2); htmlwnd2->get_event(&htmlevt);
long key; htmlevt->get_keyCode(&key);
if(int(key) == 13) { this->MbNum = this->GetInputValue("MbNum"); this->FriendName = this->GetInputValue("Name"); this->ID8751 = this->GetInputValue("ID"); this->Info = this->GetInputValue("MemTextArea"); this->ModalResult = mrOk; this->Close(); pVarResult->vt = VT_BOOL; pVarResult->boolVal = FALSE; } if(int(key) == 27) { this->Close(); pVarResult->vt = VT_BOOL; pVarResult->boolVal = FALSE; } }
void TfrmAddFriend::SetFocusInput(AnsiString itemname) { //TODO: Add your source code here _di_IDispatch disp; System::DelphiInterface<IHTMLDocument2> htmldoc2; System::DelphiInterface<IHTMLElementCollection> htmlelemcoll; System::DelphiInterface<IHTMLElement2> htmlelem2;
disp = this->CppWebBrowserAddFriend->Document; if(!disp) return;
htmldoc2 = disp; htmldoc2->get_all(&htmlelemcoll); htmlelemcoll->item(TVariant(itemname),TVariant(0),&disp);
if(!disp) return;
htmlelem2 = disp; htmlelem2->focus(); }
void __fastcall TfrmAddFriend::FormDestroy(TObject *Sender) { this->ReleaseHook(); }

|