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 + -
显示快捷键?