mirror of
https://github.com/zodiacon/WFPExplorer
synced 2026-06-08 18:39:31 +00:00
109 lines
3.0 KiB
C++
109 lines
3.0 KiB
C++
// MainFrm.cpp : implementation of the CMainFrame class
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "pch.h"
|
|
#include "resource.h"
|
|
#include "AboutDlg.h"
|
|
#include "SessionsView.h"
|
|
#include "MainFrm.h"
|
|
|
|
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) {
|
|
if (CFrameWindowImpl<CMainFrame>::PreTranslateMessage(pMsg))
|
|
return TRUE;
|
|
|
|
return m_view.PreTranslateMessage(pMsg);
|
|
}
|
|
|
|
BOOL CMainFrame::OnIdle() {
|
|
return FALSE;
|
|
}
|
|
|
|
LRESULT CMainFrame::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) {
|
|
if (!m_Engine.Open()) {
|
|
AtlMessageBox(nullptr, L"Failed to open WFP Engine", IDR_MAINFRAME, MB_ICONERROR);
|
|
return -1;
|
|
}
|
|
|
|
CreateSimpleStatusBar();
|
|
|
|
m_hWndClient = m_view.Create(m_hWnd, rcDefault, nullptr,
|
|
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 0);
|
|
UISetCheck(ID_VIEW_STATUS_BAR, 1);
|
|
|
|
CMessageLoop* pLoop = _Module.GetMessageLoop();
|
|
pLoop->AddMessageFilter(this);
|
|
pLoop->AddIdleHandler(this);
|
|
|
|
const int WINDOW_MENU_POSITION = 4;
|
|
|
|
CMenuHandle menuMain = GetMenu();
|
|
m_view.SetWindowMenu(menuMain.GetSubMenu(WINDOW_MENU_POSITION));
|
|
|
|
if (!m_Engine.Open()) {
|
|
AtlMessageBox(nullptr, L"Failed to open WFP Engine", IDR_MAINFRAME, MB_ICONERROR);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CMainFrame::OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled) {
|
|
CMessageLoop* pLoop = _Module.GetMessageLoop();
|
|
pLoop->RemoveMessageFilter(this);
|
|
pLoop->RemoveIdleHandler(this);
|
|
|
|
bHandled = FALSE;
|
|
return 1;
|
|
}
|
|
|
|
LRESULT CMainFrame::OnFileExit(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
|
|
PostMessage(WM_CLOSE);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CMainFrame::OnFileNew(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
|
|
auto pView = new CSessionsView(this, m_Engine);
|
|
pView->Create(m_view, rcDefault, nullptr, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 0);
|
|
m_view.AddPage(pView->m_hWnd, _T("Sessions"));
|
|
|
|
// TODO: add code to initialize document
|
|
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CMainFrame::OnViewStatusBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
|
|
BOOL bVisible = !::IsWindowVisible(m_hWndStatusBar);
|
|
::ShowWindow(m_hWndStatusBar, bVisible ? SW_SHOWNOACTIVATE : SW_HIDE);
|
|
UISetCheck(ID_VIEW_STATUS_BAR, bVisible);
|
|
UpdateLayout();
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CMainFrame::OnAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
|
|
CAboutDlg dlg;
|
|
dlg.DoModal();
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CMainFrame::OnWindowClose(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
|
|
int nActivePage = m_view.GetActivePage();
|
|
if (nActivePage != -1)
|
|
m_view.RemovePage(nActivePage);
|
|
else
|
|
::MessageBeep((UINT)-1);
|
|
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CMainFrame::OnWindowCloseAll(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
|
|
m_view.RemoveAllPages();
|
|
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CMainFrame::OnWindowActivate(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
|
|
int nPage = wID - ID_WINDOW_TABFIRST;
|
|
m_view.SetActivePage(nPage);
|
|
|
|
return 0;
|
|
}
|