📄 mainfrm.h
字号:
return 0;
}
LRESULT OnFileExit(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
PostMessage(WM_CLOSE);
return 0;
}
void OnEditCut(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
CEdit edit = m_AddressBar.GetEditCtrl();
if (::GetFocus() != edit) {
SetMsgHandled(FALSE);
return;
}
edit.Cut();
}
void OnEditCopy(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
CEdit edit = m_AddressBar.GetEditCtrl();
if (::GetFocus() != edit) {
SetMsgHandled(FALSE);
return;
}
edit.Copy();
}
void OnEditPaste(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
CEdit edit = m_AddressBar.GetEditCtrl();
if (::GetFocus() != edit) {
SetMsgHandled(FALSE);
return;
}
edit.Paste();
}
void OnEditSelectAll(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
CEdit edit = m_AddressBar.GetEditCtrl();
if (::GetFocus() != edit) {
SetMsgHandled(FALSE);
return;
}
edit.SetSel(0, -1);
}
LRESULT OnViewToolBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
// It sucks, band index is dynamic.
// ::SendMessage(m_hWndToolBar, RB_SHOWBAND, 0, bNew); // toolbar is band #0
MtlToggleBandVisible(m_hWndToolBar, ATL_IDW_TOOLBAR);
UpdateLayout();
return 0;
}
LRESULT OnViewAddressBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
MtlToggleBandVisible(m_hWndToolBar, IDC_ADDRESSBAR);
UpdateLayout();
return 0;
}
LRESULT OnViewLinkBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
MtlToggleBandVisible(m_hWndToolBar, IDC_LINKBAR);
UpdateLayout();
return 0;
}
LRESULT OnViewGoButton(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
if (_check_flag(ABR_EX_GOBTNVISIBLE, m_AddressBar.GetAddressBarExtendedStyle()))
m_AddressBar.ModifyAddressBarExtendedStyle(ABR_EX_GOBTNVISIBLE, 0);
else
m_AddressBar.ModifyAddressBarExtendedStyle(0, ABR_EX_GOBTNVISIBLE);
return 0;
}
LRESULT OnViewTabBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
MtlToggleBandVisible(m_hWndToolBar, IDC_MDITAB);
UpdateLayout();
return 0;
}
LRESULT OnViewTabBarMulti(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
DWORD dwOldStyle = m_MDITab.GetMDITabExtendedStyle();
if (dwOldStyle & MTB_EX_MULTILINE)
dwOldStyle &= ~MTB_EX_MULTILINE;
else
dwOldStyle |= MTB_EX_MULTILINE;
m_MDITab.SetMDITabExtendedStyle(dwOldStyle);
return 0;
}
LRESULT OnViewAddBarDropDown(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
if (m_AddressBar.GetDroppedStateEx())
m_AddressBar.ShowDropDown(FALSE);
else
m_AddressBar.ShowDropDown(TRUE);
return 0;
}
LRESULT OnViewStatusBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
BOOL bNew = !::IsWindowVisible(m_hWndStatusBar);
m_bStatusBarVisibleUnlessFullScreen = bNew;// save
::ShowWindow(m_hWndStatusBar, bNew ? SW_SHOWNOACTIVATE : SW_HIDE);
UpdateLayout();
return 0;
}
LRESULT OnViewToolBarCust(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
m_ToolBar.StdToolBar_Customize();
return 0;
}
void OnFavoriteOrganize(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
bool bOldShell = _check_flag(MAIN_EX_ORGFAVORITEOLDSHELL, CMainOption::s_dwMainExtendedStyle);
// CString strPath = DonutGetFavoritesFolder();
// MtlOrganizeFavorite(m_hWnd, bOldShell, strPath);
MtlOrganizeFavorite(m_hWnd, bOldShell, DonutGetFavoritesFolder());
}
void OnBackUpOptionChanged(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
if (m_nBackUpTimerID != 0) {
KillTimer(m_nBackUpTimerID);
m_nBackUpTimerID = 0;
}
if (CMainOption::s_dwMainExtendedStyle & MAIN_EX_BACKUP)
m_nBackUpTimerID = SetTimer(1, 1000*60*CMainOption::s_dwBackUpTime);
}
void OnTimer(UINT nIDEvent, TIMERPROC*)
{
if (m_nBackUpTimerID != nIDEvent) {
SetMsgHandled(FALSE);
return;
}
_SaveGroupOption(CStartUpOption::GetDefaultDFGFilePath());
}
void OnViewOptionDonut(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
CMainPropertyPage pageMain(m_hWnd);
CDLControlPropertyPage pageDLC;
CMDITabPropertyPage pageTab(&m_MDITab);
CDonutAddressBarPropertyPage pageAddress(m_AddressBar);
CDonutFavoritesMenuPropertyPage pageFav;
CFileNewPropertyPage pageFileNew;
CStartUpPropertyPage pageStartUp;
CString strURL, strTitle;
HWND hWndActive = MDIGetActive();
if (hWndActive) {
CWebBrowser2 browser = DonutGetIWebBrowser2(hWndActive);
if (browser.m_spBrowser != NULL) {
strURL = browser.GetLocationURL();
strTitle = MtlGetWindowText(hWndActive);// pChild->get_LocationName();
}
}
CIgnoredURLsPropertyPage pageURLs(strURL);
CCloseTitlesPropertyPage pageTitles(strTitle);
CDonutExecutablePropertyPage pageExe;
CDonutConfirmPropertyPage pageCnf;
CCenterPropertySheet sheet(_T("Donut偺僆僾僔儑儞"));
sheet.AddPage(pageMain);
sheet.AddPage(pageTab);
sheet.AddPage(pageAddress);
sheet.AddPage(pageFileNew);
sheet.AddPage(pageStartUp);
sheet.AddPage(pageDLC);
sheet.AddPage(pageURLs);
sheet.AddPage(pageTitles);
sheet.AddPage(pageFav);
sheet.AddPage(pageExe);
sheet.AddPage(pageCnf);
sheet.DoModal();
// m_LinkBar.m_ExpMenu.SetStyle(m_FavoriteMenu.GetStyle());
// }
}
void OnViewOption(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
if (MDIGetActive() == NULL)
MtlShowInternetOptions();
}
LRESULT OnWindowCloseAll(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
if (!CDonutConfirmOption::OnCloseAll(m_hWnd))
return 0;
CWaitCursor cur;
CLockRedrawMDIClient lock(m_hWndMDIClient);
CLockRedraw lock2(m_MDITab);
MtlCloseAllMDIChildren(m_hWndMDIClient);
return 0;
}
bool _IsFullScreen()
{
if (GetStyle() & WS_CAPTION)
return false;
else
return true;
}
struct _Function_FullScreen
{
CMainFrame& _wndMain;
_Function_FullScreen(CMainFrame& wndMain) : _wndMain(wndMain) { }
bool operator()()
{
if (CMainOption::s_dwMainExtendedStyle & MAIN_EX_FULLSCREEN) {
_wndMain._FullScreen(TRUE);
return true;
}
return false;
}
};
void _ShowBandsFullScreen(BOOL bOn, bool bInit = false)
{
static BOOL bOldVisibleToolBar, bOldVisibleAddressBar,
bOldVisibleGoButton, bOldVisibleMDITab, bOldVisibleLinkBar;
if (bInit) {
bOldVisibleToolBar = MtlIsBandVisible(m_hWndToolBar, ATL_IDW_TOOLBAR);
bOldVisibleAddressBar = MtlIsBandVisible(m_hWndToolBar, IDC_ADDRESSBAR);
// bOldVisibleMDITab = MtlIsBandVisible(m_hWndToolBar, IDC_MDITAB);
bOldVisibleLinkBar = MtlIsBandVisible(m_hWndToolBar, IDC_LINKBAR);
return;
}
if (bOn) {// remove caption
// save prev visible
bOldVisibleToolBar = MtlIsBandVisible(m_hWndToolBar, ATL_IDW_TOOLBAR);
bOldVisibleAddressBar = MtlIsBandVisible(m_hWndToolBar, IDC_ADDRESSBAR);
// bOldVisibleMDITab = MtlIsBandVisible(m_hWndToolBar, IDC_MDITAB);
bOldVisibleLinkBar = MtlIsBandVisible(m_hWndToolBar, IDC_LINKBAR);
MtlShowBand(m_hWndToolBar, ATL_IDW_COMMAND_BAR, FALSE);// hide it.
MtlShowBand(m_hWndToolBar, ATL_IDW_TOOLBAR, TRUE);// show it.
MtlShowBand(m_hWndToolBar, IDC_ADDRESSBAR, FALSE);
// MtlShowBand(m_hWndToolBar, IDC_MDITAB, TRUE);// show it
MtlShowBand(m_hWndToolBar, IDC_LINKBAR, FALSE);
::ShowWindow(m_hWndStatusBar, SW_HIDE);// hide it
}
else {
// restore prev visible
MtlShowBand(m_hWndToolBar, ATL_IDW_COMMAND_BAR, TRUE);// show it.
MtlShowBand(m_hWndToolBar, ATL_IDW_TOOLBAR, bOldVisibleToolBar);// show it.
MtlShowBand(m_hWndToolBar, IDC_ADDRESSBAR, bOldVisibleAddressBar);
// MtlShowBand(m_hWndToolBar, IDC_MDITAB, bOldVisibleMDITab);// show it
MtlShowBand(m_hWndToolBar, IDC_LINKBAR, bOldVisibleLinkBar);
::ShowWindow(m_hWndStatusBar, m_bStatusBarVisibleUnlessFullScreen ? SW_SHOWNOACTIVATE : SW_HIDE);
}
}
void _FullScreen(BOOL bOn)
{
static BOOL bOldMaximized;
_ShowBandsFullScreen(bOn);
if (bOn) {// remove caption
// save prev visible
CWindowPlacement wndpl;
GetWindowPlacement(&wndpl);
bOldMaximized = (wndpl.showCmd == SW_SHOWMAXIMIZED);
ModifyStyle(WS_CAPTION, 0);
m_mcToolBar.m_bVisible = true;
if (!bOldMaximized)
ShowWindow(SW_MAXIMIZE);
else {
SetWindowPos(NULL, 0, 0, 0, 0,
SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE|SWP_NOZORDER|SWP_FRAMECHANGED);
}
}
else {
m_mcToolBar.m_bVisible = false;
// restore prev visible
ModifyStyle(0, WS_CAPTION);
if (!bOldMaximized)
ShowWindow(SW_RESTORE);
else {
SetWindowPos(NULL, 0, 0, 0, 0,
SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE|SWP_NOZORDER|SWP_FRAMECHANGED);
}
}
}
void OnViewFullScreen(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
if (GetStyle() & WS_CAPTION) {// remove caption
_FullScreen(TRUE);
}
else {
_FullScreen(FALSE);
}
// SetWindowPos(NULL, 0, 0, 0, 0,
// SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE|SWP_NOZORDER|SWP_FRAMECHANGED);
}
void OnFavoriteGroupSave(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
if (MDIGetActive() == NULL)
return;
TCHAR szOldPath[MAX_PATH];// save current directory
::GetCurrentDirectory(MAX_PATH, szOldPath);
const TCHAR szFilter[] = _T("Donut Favorite Group僼傽僀儖(*.dfg)\0*.dfg\0\0");
::SetCurrentDirectory(DonutGetFavoriteGroupFolder());
CFileDialog fileDlg(FALSE, _T("dfg"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
fileDlg.m_ofn.lpstrInitialDir = DonutGetFavoriteGroupFolder();
fileDlg.m_ofn.lpstrTitle = _T("Save As Favorite Group");
if (fileDlg.DoModal() == IDOK) {
_SaveGroupOption(fileDlg.m_szFileName);
}
// restore current directory
::SetCurrentDirectory(szOldPath);
}
void OnFavoriteGroupOrganize(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
::ShellExecute(m_hWnd, NULL, DonutGetFavoriteGroupFolder(), NULL, NULL, SW_SHOWNORMAL);
}
void OnViewRefreshAll(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
MtlForEachMDIChild(m_hWndMDIClient, CPostCommand(ID_VIEW_REFRESH));
}
void OnViewStopAll(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
MtlForEachMDIChild(m_hWndMDIClient, CPostCommand(ID_VIEW_STOP));
}
void OnSetFocusAddressBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWndCtl)
{
::SetFocus(m_AddressBar.GetEditCtrl());
}
void OnTabLeft(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWndCtl)
{
m_MDITab.LeftTab();
}
void OnTabRight(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWndCtl)
{
m_MDITab.RightTab();
}
void __AddToAddressBoxUnique(const CString& strURL)
{
COMBOBOXEXITEM item;
item.mask = CBEIF_TEXT;
item.iItem = 0;
item.pszText = (LPTSTR)(LPCTSTR)strURL;
// search the same string
int nCount = m_AddressBar.GetCount();
for (int n = 0; n < nCount; ++n) {
CString str;
MtlGetLBTextFixed(m_AddressBar, n, str);
if (strURL == str) {
m_AddressBar.DeleteItem(n);
break;
}
}
m_AddressBar.InsertItem(&item);
}
void __MoveToTopAddressBox(const CString& strURL)
{
COMBOBOXEXITEM item;
item.mask = CBEIF_TEXT;
item.iItem = 0;
item.pszText = (LPTSTR)(LPCTSTR)strURL;
// search the same string
int nCount = m_AddressBar.GetCount();
for (int n = 0; n < nCount; ++n) {
CString str;
MtlGetLBTextFixed(m_AddressBar, n, str);
if (strURL == str) {
m_AddressBar.DeleteItem(n);
m_AddressBar.InsertItem(&item);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -