fmain.cpp

来自「使用TCppWebBrowser控件实现的浏览器」· C++ 代码 · 共 1,381 行 · 第 1/3 页

CPP
1,381
字号
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ComboBoxAddressKeyUp(TObject *Sender,
      WORD &Key, TShiftState Shift)
{
    if(Key == 13)       // 回车
    {
        if(Shift.Contains(ssCtrl))
        {
            ComboBoxAddress->Text = ComboBoxAddress->Text.Insert("www.",1);
            ComboBoxAddress->Text = ComboBoxAddress->Text + ".com";
        }else if(Shift.Contains(ssShift))
        {
            ComboBoxAddress->Text = ComboBoxAddress->Text.Insert("www.",1);
            ComboBoxAddress->Text = ComboBoxAddress->Text + ".net";
        }else if(Shift.Contains(ssAlt))
        {
            ComboBoxAddress->Text = ComboBoxAddress->Text.Insert("www.",1);
            ComboBoxAddress->Text = ComboBoxAddress->Text + ".com.cn";
        }
        ComboBoxAddress->Hint = ComboBoxAddress->Text;
        ActionVisitExecute(ActionVisit);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionBackExecute(
      TObject *Sender)
{
    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->CppWebBrowser->GoBack();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionForwordExecute(
      TObject *Sender)
{
    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->CppWebBrowser->GoForward();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionRefreshExecute(
      TObject *Sender)
{
    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->CppWebBrowser->Refresh();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionStopExecute(
      TObject *Sender)
{
    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->CppWebBrowser->Stop();
    }

}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionGoHomeExecute(
      TObject *Sender)
{
    TfmChildwin *fBrowser = ::CreateMDIChild();
    fBrowser->CppWebBrowser->Offline = ActionOffline->Checked;
    fBrowser->CppWebBrowser->GoHome();
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionGoSearchExecute(TObject *Sender)
{
    TfmChildwin *fBrowser = ::CreateMDIChild();
    fBrowser->CppWebBrowser->Offline = ActionOffline->Checked;
    fBrowser->CppWebBrowser->GoSearch();
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionFilePrintExecute(
      TObject *Sender)
{
    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->DOC_Print(false);
    }

}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionFilePrintDialogExecute(TObject *Sender)
{
    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->DOC_Print();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionFilePrintReviewExecute(
      TObject *Sender)
{
    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->DOC_PrintPreview();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionEditCutExecute(TObject *Sender)
{
    if(ComboBoxAddress->Focused())
    {
        if(!ComboBoxAddress->SelText.IsEmpty())
        {
            Clipboard()->AsText = ComboBoxAddress->SelText;
            ComboBoxAddress->SelText = "";
            ComboBoxAddress->Hint = ComboBoxAddress->Text;
        }
    }else
    {
        TfmChildwin *fBrowser = GetActiveBrowserWindow();
        if(fBrowser)
        {
            fBrowser->DOC_Cut();
        }
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionEditCopyExecute(
      TObject *Sender)
{
    if(ComboBoxAddress->Focused())
    {
        if(!ComboBoxAddress->SelText.IsEmpty())
        {
            Clipboard()->AsText = ComboBoxAddress->SelText;
        }
    }else
    {
        TfmChildwin *fBrowser = GetActiveBrowserWindow();
        if(fBrowser)
        {
            fBrowser->DOC_Copy();
        }
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionEditPasteExecute(
      TObject *Sender)
{
    if(ComboBoxAddress->Focused())
    {
        AnsiString Text = Clipboard()->AsText;
        if(!Text.IsEmpty())
        {
            ComboBoxAddress->SelText = Text;
            ComboBoxAddress->Hint = ComboBoxAddress->Text;
        }
    }else
    {
        TfmChildwin *fBrowser = GetActiveBrowserWindow();
        if(fBrowser)
        {
            fBrowser->DOC_Paste();
        }
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionEditSelectAllExecute(
      TObject *Sender)
{
    if(ComboBoxAddress->Focused())
    {
        ComboBoxAddress->SelectAll();
    }else
    {
        TfmChildwin *fBrowser = GetActiveBrowserWindow();
        if(fBrowser)
        {
            fBrowser->DOC_SelectAll();
        }
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionFindExecute(TObject *Sender)
{
    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->DOC_Find();
    }
}
//---------------------------------------------------------------------------
void SetupIEOption(HANDLE hWnd)
{
    typedef int __stdcall (LAUNCHINTERNETCONTROLPANEL)(HANDLE);
    //
    HANDLE hInetcpl = LoadLibrary("inetcpl.cpl");
    if(hInetcpl)
    {
        LAUNCHINTERNETCONTROLPANEL *pLaunchInternetControlPanel = (LAUNCHINTERNETCONTROLPANEL *)GetProcAddress(hInetcpl,"LaunchInternetControlPanel");
        if(pLaunchInternetControlPanel)
        {
            pLaunchInternetControlPanel(hWnd);
        }
        FreeLibrary(hInetcpl);
    }
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ActionInternetOptionExecute(
      TObject *Sender)
{
/*    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->DOC_IE_Option();
    }            */
    SetupIEOption(Handle);
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionViewSourceExecute(
      TObject *Sender)
{
    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->DOC_ViewSource();
    }
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::mAddToFavoriteClick(TObject *Sender)
{
    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->DOC_AddFavorites();
        GetFavories();
    }
}
//---------------------------------------------------------------------------
typedef int __stdcall (DOOOGANIZEFAVDLG)(HANDLE,const char *);
void __fastcall TfmMain::ActionEditFarivatesExecute(
      TObject *Sender)
{
    //
    HANDLE hShDocvw = LoadLibrary("shdocvw.dll");
    if(hShDocvw)
    {
        DOOOGANIZEFAVDLG *pDoOrganizeFavDlg = (DOOOGANIZEFAVDLG *)GetProcAddress(hShDocvw,"DoOrganizeFavDlg");
        if(pDoOrganizeFavDlg)
        {
            pDoOrganizeFavDlg(Handle,NULL);
            GetFavories();
        }
        FreeLibrary(hShDocvw);
    }

}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionFileOpenExecute(
      TObject *Sender)
{
    if(OpenDialog1->Execute())
    {
        TfmChildwin *fBrowser ;
        if(fBrowser)
        {
            AnsiString URL = ComboBoxAddress->Text.Trim();
            fBrowser = CreateMDIChild();
            fBrowser->DOC_Open(OpenDialog1->FileName);
        }
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionFileSaveAsExecute(
      TObject *Sender)
{
    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->DOC_SaveAs("");
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionFilePageSetExecute(
      TObject *Sender)
{
    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->DOC_PageSet();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionPropExecute(TObject *Sender)
{
    TfmChildwin *fBrowser = GetActiveBrowserWindow();
    if(fBrowser)
    {
        fBrowser->DOC_Properties();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionOfflineExecute(TObject *Sender)
{
    ActionOffline->Checked = !ActionOffline->Checked;

    TfmChildwin *fChild;
    for(int i=0;i<this->MDIChildCount;++i)
    {
        fChild = static_cast<TfmChildwin *>(this->MDIChildren[i]);
        fChild->CppWebBrowser->Offline = ActionOffline->Checked;
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ComboBoxAddressClick(TObject *Sender)
{
    ActionVisitExecute(ActionVisit);
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::mShowToolbarClick(TObject *Sender)
{
    mShowToolbar->Checked = ! mShowToolbar->Checked;
        PanelToolBar->Visible = mShowToolbar->Checked;
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::mShowAddressBarClick(TObject *Sender)
{
    mShowAddressBar->Checked = ! mShowAddressBar->Checked;
        PanelAddress->Visible = mShowAddressBar->Checked;
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::mShowStatusBarClick(TObject *Sender)
{
    mShowStatusBar->Checked = ! mShowStatusBar->Checked;
        StatusBar1->Visible = mShowStatusBar->Checked;
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::PanelURLResize(TObject *Sender)
{
    int d = 311-257;
    ComboBoxAddress->Width = PanelURL->Width - d;
}
//---------------------------------------------------------------------------
void TfmMain::SetFullScreen(bool full)
{
    static long OldStyle=0;
    static long OldExStyle=0;
    static long fcStyle=0x178B0000;
    static long fcExStyle=0;
    static TWindowState State;

    static int OldLeft = 0;
    static int OldTop = 0;
    static int OldWidth = 0;
    static int OldHeight = 0;

    // 禁止窗口的更新
    LockWindowUpdate(Handle);
    //
    if(OldStyle==0)
    {
        OldStyle=GetWindowLong(Handle,GWL_STYLE);
        OldExStyle=GetWindowLong(Handle,GWL_EXSTYLE);
    }

    bool notfull=!full;
    //
    CoolBar1->Visible = notfull;
//    StatusBar1->Visible=notfull;
    if(full)   // 设置正常窗口
    {
        OldLeft = Left;
        OldTop = Top;
        OldWidth = Width;
        OldHeight = Height;

        State=WindowState;
        WindowState=wsNormal;

        SetWindowLong(Handle,GWL_STYLE,fcStyle);
        SetWindowLong(Handle,GWL_EXSTYLE,fcExStyle);

        SetWindowPos(Handle,NULL,-1,-1,Screen->Width + 2,Screen->Height + 2,SWP_NOZORDER);
    }else       // 撤销全屏幕方式
    {
        WindowState=State;
        // 设置窗口模式为正常
        SetWindowLong(Handle,GWL_STYLE,OldStyle);
        SetWindowLong(Handle,GWL_EXSTYLE,OldExStyle);

        Left = OldLeft;
        Top = OldTop;
        Width = OldWidth;
        Height = OldHeight;
    }
    LockWindowUpdate(NULL);
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ActionFullScreenExecute(
      TObject *Sender)
{
    if(this->MDIChildCount == 0)
        return;
    ActionFullScreen->Checked = !ActionFullScreen->Checked;
    SetFullScreen(ActionFullScreen->Checked);
}
//---------------------------------------------------------------------------
// 读取收藏夹
//---------------------------------------------------------------------------
const char *Section_InternetShortcut = "InternetShortcut";
const char *key_InternetShortcut = "URL";

const int FoldImageIndex = 1;
const int UrlShortCutImageIndex = 0;
//---------------------------------------------------------------------------
void TfmMain::GetFavoriesFolder(TMenuItem *ParentMenu,AnsiString Folder,int MaxCount)
{
    if(Folder[Folder.Length()] != '\\')
        Folder = Folder + "\\";

    ParentMenu->AutoHotkeys = maManual;

    char Buffer[MAX_PATH];
    WIN32_FIND_DATA ffd;
    TMenuItem *Item;
    AnsiString FileName;

    AnsiString Dest = Folder + "*.*";
    HANDLE hFind=FindFirstFile(Dest.c_str(), &ffd);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?