⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fchildwin.cpp

📁 使用TCppWebBrowser控件实现的浏览器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
}
//---------------------------------------------------------------------------
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 + -