📄 fchildwin.cpp
字号:
}
//---------------------------------------------------------------------------
bool TfmChildwin::CommandEnabled(Shdocvw_tlb::OLECMDID cmdID)
{
Shdocvw_tlb::OLECMDF S = CppWebBrowser->QueryStatusWB(cmdID);
return (S & Shdocvw_tlb::OLECMDF_ENABLED);
}
//---------------------------------------------------------------------------
// 执行命令
void TfmChildwin::ExecWB(Shdocvw_tlb::OLECMDID cmdID,TVariant *pvaIn ,TVariant *pvaOut ,Shdocvw_tlb::OLECMDEXECOPT cmdexecopt)
{
CppWebBrowser->ExecWB(cmdID,cmdexecopt, pvaIn, pvaOut);
}
//---------------------------------------------------------------------------
// 打印相关
//---------------------------------------------------------------------------
bool TfmChildwin::DOC_CanPageSet(void)
{
return CommandEnabled(Shdocvw_tlb::OLECMDID_PAGESETUP);
}
//---------------------------------------------------------------------------
bool TfmChildwin::DOC_CanPrintPreview(void)
{
return CommandEnabled(Shdocvw_tlb::OLECMDID_PRINTPREVIEW);
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void TfmChildwin::DOC_PageSet(void)
{
ExecWB(Shdocvw_tlb::OLECMDID_PAGESETUP);
}
//---------------------------------------------------------------------------
void TfmChildwin::DOC_PrintPreview(void)
{
ExecWB(Shdocvw_tlb::OLECMDID_PRINTPREVIEW);
}
//---------------------------------------------------------------------------
void TfmChildwin::DOC_Print(bool ShowDialog)
{
int nCmdExecOpt;
if(ShowDialog) nCmdExecOpt = ::OLECMDEXECOPT_DODEFAULT;
else nCmdExecOpt = ::OLECMDEXECOPT_DONTPROMPTUSER;
ExecWBEx(IDM_PRINT,NULL,NULL,nCmdExecOpt);
}
//---------------------------------------------------------------------------
void TfmChildwin::DOC_Properties(void)
{
ExecWB(Shdocvw_tlb::OLECMDID_PROPERTIES);
}
//---------------------------------------------------------------------------
// 保存与打开
void TfmChildwin::DOC_New(void)
{
ExecWB(Shdocvw_tlb:: OLECMDID_NEW);
}
//---------------------------------------------------------------------------
void TfmChildwin::DOC_Open(AnsiString URL)
{
NavigateURL(URL);
}
//---------------------------------------------------------------------------
void TfmChildwin::DOC_Save(void)
{
ExecWB(Shdocvw_tlb::OLECMDID_SAVE);
}
//---------------------------------------------------------------------------
void TfmChildwin::DOC_SaveAs(AnsiString FileName)
{
TVariant vaIn;
if(FileName.IsEmpty()) vaIn = FTitle;
else vaIn = FileName;
ExecWB(Shdocvw_tlb::OLECMDID_SAVEAS,&vaIn);
// ExecWBEx(IDM_SAVEAS,&vaIn);
}
//---------------------------------------------------------------------------
// 编辑
void TfmChildwin::DOC_SelectAll(void)
{
ExecWB(Shdocvw_tlb::OLECMDID_SELECTALL);
}
//---------------------------------------------------------------------------
void TfmChildwin::DOC_Cut(void)
{
ExecWB(Shdocvw_tlb::OLECMDID_CUT);
}
//---------------------------------------------------------------------------
void TfmChildwin::DOC_Copy(void)
{
ExecWB(Shdocvw_tlb::OLECMDID_COPY);
}
//---------------------------------------------------------------------------
void TfmChildwin::DOC_Paste(void)
{
ExecWB(Shdocvw_tlb::OLECMDID_PASTE);
}
//---------------------------------------------------------------------------
void __fastcall TfmChildwin::SetDOC_FontSize(int value)
{
TVariant vaIn = value;
ExecWB(Shdocvw_tlb::OLECMDID_ZOOM,&vaIn);
}
//---------------------------------------------------------------------------
int __fastcall TfmChildwin::GetDOC_FontSize()
{
TVariant vaOut;
ExecWB(Shdocvw_tlb::OLECMDID_ZOOM,NULL,&vaOut);
int size = vaOut;
return size;
}
//---------------------------------------------------------------------------
// 通过IID_IOleCommandTarget接口执行命令
void TfmChildwin::ExecWBEx(int cmdID,TVariant *pvaIn,TVariant *pvaOut,int nCmdExecOpt)
{
IDispatch * WebDocument = static_cast<IDispatch *>(CppWebBrowser->Document);
IHTMLDocument2 *HTMLDocument = static_cast<IHTMLDocument2 *>(WebDocument);
if(HTMLDocument)
{
IOleCommandTarget *pCmd;
HRESULT hr=HTMLDocument->QueryInterface(IID_IOleCommandTarget,(void **)(&pCmd));
if(SUCCEEDED(hr))
{
pCmd->Exec(&CGID_MSHTML,cmdID,nCmdExecOpt,pvaIn,pvaOut);
}
}
}
//---------------------------------------------------------------------------
void TfmChildwin::DOC_Find(void)
{
// ExecWB(Shdocvw_tlb::OLECMDID_FIND); // 不对
ExecWBEx(IDM_FIND);
}
//---------------------------------------------------------------------------
void TfmChildwin::DOC_ViewSource(void)
{
ExecWBEx(IDM_VIEWSOURCE);
}
//---------------------------------------------------------------------------
void TfmChildwin::DOC_AddFavorites(void)
{
ExecWBEx(IDM_ADDFAVORITES);
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
bool __fastcall TfmChildwin::getDOC_CanCut(void)
{
return CommandEnabled(Shdocvw_tlb::OLECMDID_CUT);
}
//---------------------------------------------------------------------------
bool __fastcall TfmChildwin::getDOC_CanCopy(void)
{
return CommandEnabled(Shdocvw_tlb::OLECMDID_COPY);
}
//---------------------------------------------------------------------------
bool __fastcall TfmChildwin::getDOC_CanPaste(void)
{
return CommandEnabled(Shdocvw_tlb::OLECMDID_PASTE);
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfmChildwin::CppWebBrowserWindowSetLeft(
TObject *Sender, long Left)
{
if(IsClosing)return;
//
if(Left >= Screen->Width)
{
Close();
}
}
//---------------------------------------------------------------------------
void __fastcall TfmChildwin::CppWebBrowserWindowSetTop(
TObject *Sender, long Top)
{
if(IsClosing)return;
//
if(Top >= Screen->Height)
{
Close();
}
}
//---------------------------------------------------------------------------
void __fastcall TfmChildwin::CppWebBrowserWindowSetWidth(
TObject *Sender, long Width)
{
//
}
//---------------------------------------------------------------------------
void __fastcall TfmChildwin::CppWebBrowserWindowSetHeight(
TObject *Sender, long Height)
{
//
}
//---------------------------------------------------------------------------
void __fastcall TfmChildwin::CppWebBrowserWindowClosing(
TObject *Sender, VARIANT_BOOL IsChildWindow, VARIANT_BOOL *Cancel)
{
if(IsClosing)return;
Close();
}
//---------------------------------------------------------------------------
void TfmChildwin::SendSubmitToDocument(void)
{
SendKeys("~",true); // 模拟RETURN键
}
//---------------------------------------------------------------------------
void __fastcall TfmChildwin::Show(void)
{
try
{
// 显示子窗口
::LockWindowUpdate(Application->MainForm->ClientHandle);
TForm::Show();
}__finally
{
::LockWindowUpdate(NULL);
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// 创建一个子窗口
TfmChildwin *CreateMDIChild(void)
{
TfmChildwin *fChild = NULL;
try
{
::LockWindowUpdate(Application->MainForm->ClientHandle);
fChild = new TfmChildwin(Application->MainForm);
}__finally
{
::LockWindowUpdate(NULL);
return fChild;
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -