// MainFrm.cpp : implementation of the CMainFrame class // #include "stdafx.h" #include "RstDemo.h" #include "MainFrm.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define MAX_STRING_BUFFER 255 ///////////////////////////////////////////////////////////////////////////// // LUserToolbar LEAD_IMPLEMENTOBJECT(LUserToolbar); LUserToolbar::LUserToolbar() { EnableCallBack(TRUE); m_pStatusBar = NULL ; m_hInsatnce = 0 ; } LUserToolbar::~LUserToolbar() { } L_INT LUserToolbar::SetStatusBar( CWnd* pStatusBar, HINSTANCE hInst ) { m_pStatusBar = pStatusBar ; return SUCCESS ; } L_INT LUserToolbar::ToolbarCallBack(L_UINT nButtonID, L_UINT32 dwData) { L_TCHAR buffer [ MAX_STRING_BUFFER ] ; L_INT nID=ID_TOOL_BRUSH; if (nButtonID == -1) SetButtonChecked(m_nPrevButton); else m_nPrevButton = nButtonID; switch ( nButtonID ) { case ID_TOOL_PAINT_BRUSH: { nID = ID_TOOL_BRUSH ; } break ; case ID_TOOL_PAINT_SHAPE_LINE: { nID = ID_TOOL_SHAPE_LINE ; } break ; case ID_TOOL_PAINT_SHAPE_RECT: { nID = ID_TOOL_SHAPE_RECT ; } break ; case ID_TOOL_PAINT_SHAPE_ROUNDRECT: { nID = ID_TOOL_SHAPE_ROUNDRECT ; } break ; case ID_TOOL_PAINT_SHAPE_ELLIPSE: { nID = ID_TOOL_SHAPE_ELLIPSE ; } break ; case ID_TOOL_PAINT_SHAPE_POLYGON: { nID = ID_TOOL_SHAPE_POLYGON ; } break ; case ID_TOOL_PAINT_SHAPE_BEZIER: { nID = ID_TOOL_SHAPE_BEZIER ; } break ; case ID_TOOL_PAINT_REGION_RECT: { nID = ID_TOOL_REGION_RECT ; } break ; case ID_TOOL_PAINT_REGION_ROUNDRECT: { nID = ID_TOOL_REGION_ROUNDRECT ; } break ; case ID_TOOL_PAINT_REGION_ELLIPSE: { nID = ID_TOOL_REGION_ELLIPSE ; } break ; case ID_TOOL_PAINT_REGION_POLYGON: { nID = ID_TOOL_REGION_POLYGON ; } break ; case ID_TOOL_PAINT_REGION_SURFACE: { nID = ID_TOOL_REGION_SURFACE ; } break ; case ID_TOOL_PAINT_REGION_BORDER: { nID = ID_TOOL_REGION_BORDER ; } break ; case ID_TOOL_PAINT_REGION_COLOR: { nID = ID_TOOL_REGION_COLOR ; } break ; case ID_TOOL_PAINT_FILL_SURFACE: { nID = ID_TOOL_FILL_SURFACE ; } break ; case ID_TOOL_PAINT_FILL_BORDER: { nID = ID_TOOL_FILL_BORDER ; } break ; case ID_TOOL_PAINT_FILL_COLORREPLACE: { nID = ID_TOOL_FILL_COLORREPLACE ; } break ; case ID_TOOL_PAINT_TEXT: { nID = ID_TOOL_TEXT ; } break ; case ID_TOOL_PAINT_ZOOM: { nID = ID_TOOL_ZOOM ; } break ; case ID_TOOL_PAINT_BORDERCOLORPICKER: { nID = ID_TOOL_BORDERCOLORPICKER ; } break ; case ID_TOOL_PAINT_MOVER: { nID = ID_TOOL_MOVER ; } break ; } LoadString ( m_hInsatnce , nID, buffer, MAX_STRING_BUFFER ) ; if (m_pStatusBar) m_pStatusBar->SetWindowText( buffer ) ; return SUCCESS ; } ///////////////////////////////////////////////////////////////////////////// // CMainFrame IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_WM_DESTROY() ON_WM_PALETTECHANGED() ON_WM_QUERYNEWPALETTE() ON_WM_SYSCOLORCHANGE() ON_WM_CLOSE() ON_COMMAND(ID_VIEW_TOOL_BAR, OnViewToolBar) ON_UPDATE_COMMAND_UI(ID_VIEW_TOOL_BAR, OnUpdateViewToolBar) ON_WM_PALETTEISCHANGING() //}}AFX_MSG_MAP END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, }; ///////////////////////////////////////////////////////////////////////////// // CMainFrame construction/destruction CMainFrame::CMainFrame() { } CMainFrame::~CMainFrame() { } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; 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 } LRasterPaintWindow::Initialize(); LRasterPaintWindow::CreateToolbar(&m_LToolbar, m_hWnd, TEXT("Raster Paint Toolbar")); LRasterPaintWindow::SetToolbar(&m_LToolbar); m_LToolbar.SetStatusBar( GetMessageBar( ), AfxGetApp()->m_hInstance ) ; POINT ptPos = {0, 0}; RECT rcClient; CMainFrame::GetClientRect(&rcClient); ptPos.x = rcClient.left + 2; ptPos.y = rcClient.top + 2; CMainFrame::ClientToScreen(&ptPos); LRasterPaintWindow::SetToolbarPosition(&ptPos); LRasterPaintWindow::ShowToolbar(TRUE); return 0; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CMDIFrameWnd::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CMainFrame diagnostics #ifdef _DEBUG void CMainFrame::AssertValid() const { CMDIFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CMDIFrameWnd::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMainFrame message handlers void CMainFrame::OnDestroy() { LRasterPaintWindow::Free(); CMDIFrameWnd::OnDestroy(); } void CMainFrame::OnPaletteChanged(CWnd* pFocusWnd) { if(pFocusWnd!=NULL) SendMessageToDescendants(WM_HANDLEPALETTE,(WPARAM)pFocusWnd->m_hWnd, TRUE); } BOOL CMainFrame::OnQueryNewPalette() { CMDIChildWnd* pMDIChildWnd = MDIGetActive(); if (pMDIChildWnd!=NULL) { CRstDemoView* pView = (CRstDemoView*)pMDIChildWnd->GetActiveView(); if(pView!=NULL) { pView->m_RasterPntWnd.HandlePalette(WM_QUERYNEWPALETTE,0,0); return TRUE; } } return FALSE; } void CMainFrame::OnSysColorChange() { OnQueryNewPalette(); } void CMainFrame::OnPaletteIsChanging(CWnd* pRealizeWnd) { OnPaletteChanged (GetActiveView()); } void CMainFrame::OnClose() { CRstDemoApp *pTheApp = (CRstDemoApp*)AfxGetApp() ; pTheApp->DoSaveAllDocs() ; LRasterPaintWindow::FreeToolbar(&m_LToolbar); LRasterPaintWindow::Free(); CMDIFrameWnd::OnClose(); } void CMainFrame::OnViewToolBar() { LRasterPaintWindow::ShowToolbar(!m_LToolbar.IsVisible()); } void CMainFrame::OnUpdateViewToolBar(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_LToolbar.IsVisible()); }