home *** CD-ROM | disk | FTP | other *** search
- // mainfrm.cpp : implementation of the CMainFrame class
- //
-
-
- #include "stdafx.h"
- #include "mainfrm.h"
- #include "resource.h"
- #include "Shell.h"
-
-
- IMPLEMENT_DYNCREATE(CMainFrame, CMDIFrameWnd)
- BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
- //{{AFX_MSG_MAP(CMainFrame)
- ON_WM_CREATE()
- ON_WM_CLOSE()
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
- static UINT BASED_CODE buttons[] =
- {
- // same order as in the bitmap 'toolbar.bmp'
- ID_FILE_NEW, ID_FILE_OPEN, ID_FILE_SAVE, 0,
- ID_EDIT_CUT, ID_EDIT_COPY, ID_EDIT_PASTE, 0,
- ID_FILE_PRINT, ID_APP_ABOUT,
- };
-
- static UINT BASED_CODE indicators[] =
- {
- 0, ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL,
- };
-
- int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
- return -1;
-
- /*
- if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
- | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
- !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
- {
- TRACE0("Failed to create toolbar\n");
- return -1; // fail to create
- }
- */
-
- if (!m_wndStatusBar.Create(this) ||
- !m_wndStatusBar.SetIndicators(indicators,
- sizeof(indicators)/sizeof(UINT)))
- {
- TRACE0("Failed to create status bar\n");
- return -1; // fail to create
- }
-
- // TODO: Delete these three lines if you don't want the toolbar to
- // be dockable
- /*
- m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
- EnableDocking(CBRS_ALIGN_ANY);
- DockControlBar(&m_wndToolBar);
- */
-
- return 0;
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // Helpers for saving/restoring window state
-
- static TCHAR BASED_CODE szSection[] = _T("Settings");
- static TCHAR BASED_CODE szWindowPos[] = _T("WindowPos");
- static TCHAR szFormat[] = _T("%u,%u,%d,%d,%d,%d,%d,%d,%d,%d");
-
- static BOOL PASCAL NEAR ReadWindowPlacement(LPWINDOWPLACEMENT pwp)
- {
- CString strBuffer = AfxGetApp()->GetProfileString(szSection, szWindowPos);
- if (strBuffer.IsEmpty())
- return FALSE;
-
- WINDOWPLACEMENT wp;
- int nRead = _stscanf(strBuffer, szFormat,
- &wp.flags, &wp.showCmd,
- &wp.ptMinPosition.x, &wp.ptMinPosition.y,
- &wp.ptMaxPosition.x, &wp.ptMaxPosition.y,
- &wp.rcNormalPosition.left, &wp.rcNormalPosition.top,
- &wp.rcNormalPosition.right, &wp.rcNormalPosition.bottom);
-
- if (nRead != 10)
- return FALSE;
-
- wp.length = sizeof wp;
- *pwp = wp;
- return TRUE;
- }
-
- static void PASCAL NEAR WriteWindowPlacement(LPWINDOWPLACEMENT pwp)
- // write a window placement to settings section of app's ini file
- {
- TCHAR szBuffer[sizeof("-32767")*8 + sizeof("65535")*2];
-
- wsprintf(szBuffer, szFormat,
- pwp->flags, pwp->showCmd,
- pwp->ptMinPosition.x, pwp->ptMinPosition.y,
- pwp->ptMaxPosition.x, pwp->ptMaxPosition.y,
- pwp->rcNormalPosition.left, pwp->rcNormalPosition.top,
- pwp->rcNormalPosition.right, pwp->rcNormalPosition.bottom);
- AfxGetApp()->WriteProfileString(szSection, szWindowPos, szBuffer);
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- void CMainFrame::InitialShowWindow(UINT nCmdShow)
- {
- WINDOWPLACEMENT wp;
- if (!ReadWindowPlacement(&wp))
- {
- ShowWindow(SW_SHOWMAXIMIZED); /* by default, maximized */
- //ShowWindow(nCmdShow);
- return;
- }
- if (nCmdShow != SW_SHOWNORMAL)
- wp.showCmd = nCmdShow;
- SetWindowPlacement(&wp);
- ShowWindow(wp.showCmd);
- }
-
- void CMainFrame::OnClose()
- {
- // before it is destroyed, save the position of the window
- WINDOWPLACEMENT wp;
- wp.length = sizeof wp;
- if (GetWindowPlacement(&wp))
- {
- wp.flags = 0;
- if (IsZoomed())
- wp.flags |= WPF_RESTORETOMAXIMIZED;
- // and write it to the .INI file
- WriteWindowPlacement(&wp);
- }
-
- /* Ask question (exit) ? */
- if (
- (strcmp(WhttLocation,"FirstInfo") == 0)
- ||
- (strcmp(WhttLocation,"Wid1") == 0)
- ||
- (strcmp(WhttLocation,"Infoend") == 0)
- ) {
- /* Direct */
- CMDIFrameWnd::OnClose();
- } else {
- if (AfxMessageBox(LANG(LANG_J1),MB_OKCANCEL)==IDOK)
- CMDIFrameWnd::OnClose();
- }
- }
-