// ipframe.cpp : implementation of the CInPlaceFrame class // #include "stdafx.h" #include "pbrush.h" #include "pbrusfrm.h" #include "pbrusvw.h" #include "ipframe.h" #include "minifwnd.h" #include "imgwell.h" #include "toolbox.h" #include "imgcolor.h" #include "bmobject.h" #include "imgsuprt.h" #include "global.h" #include "colorsrc.h" #include #ifdef _DEBUG #undef THIS_FILE static CHAR BASED_CODE THIS_FILE[] = __FILE__; #endif IMPLEMENT_DYNCREATE(CInPlaceFrame, COleIPFrameWnd) #include "memtrace.h" /***************************************************************************/ // CInPlaceFrame BEGIN_MESSAGE_MAP(CInPlaceFrame, COleIPFrameWnd) //{{AFX_MSG_MAP(CInPlaceFrame) ON_WM_CREATE() ON_WM_SIZE() ON_WM_SYSCOLORCHANGE() ON_WM_CLOSE() //}}AFX_MSG_MAP ON_MESSAGE(WM_CONTEXTMENU, OnContextMenu) // Global help commands ON_COMMAND(ID_HELP_INDEX, OnHelpIndex) ON_COMMAND(ID_HELP_USING, OnHelpUsing) ON_COMMAND(ID_HELP, OnHelp) ON_COMMAND(ID_DEFAULT_HELP, OnHelpIndex) ON_COMMAND(ID_CONTEXT_HELP, OnContextHelp) ON_UPDATE_COMMAND_UI(ID_VIEW_TOOL_BOX, COleIPFrameWnd::OnUpdateControlBarMenu) ON_COMMAND_EX(ID_VIEW_TOOL_BOX, COleIPFrameWnd::OnBarCheck) ON_UPDATE_COMMAND_UI(ID_VIEW_COLOR_BOX, COleIPFrameWnd::OnUpdateControlBarMenu) ON_COMMAND_EX(ID_VIEW_COLOR_BOX, COleIPFrameWnd::OnBarCheck) END_MESSAGE_MAP() /***************************************************************************/ // CInPlaceFrame construction/destruction CInPlaceFrame::CInPlaceFrame() { theApp.m_pwndInPlaceFrame = this; } /***************************************************************************/ CInPlaceFrame::~CInPlaceFrame() { theApp.m_pwndInPlaceFrame = NULL; theApp.m_hwndInPlaceApp = NULL; g_pStatBarWnd = 0; g_pImgToolWnd = 0; g_pImgColorsWnd = 0; } /***************************************************************************/ CWnd* CInPlaceFrame::GetMessageBar() { CPBFrame* pwndMain = (CPBFrame*)theApp.m_pMainWnd; if (pwndMain != NULL && pwndMain->m_statBar.m_hWnd != NULL) return &(pwndMain->m_statBar); return NULL; } /***************************************************************************/ int CInPlaceFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (COleIPFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; // CResizeBar implements in-place resizing. if (! m_wndResizeBar.Create( this )) { TRACE(TEXT("MSPaint Failed to create resize bar\n")); return -1; // fail to create } // By default, it is a good idea to register a drop-target that does // nothing with your frame window. This prevents drops from // "falling through" to a container that supports drag-drop. m_dropTarget.Register( this ); return 0; } /******************************************************************************/ BOOL CInPlaceFrame::OnCreateControlBars( CFrameWnd* pWndFrame, CFrameWnd* pWndDoc ) { theApp.m_hwndInPlaceApp = pWndFrame->GetSafeHwnd(); CPBView* pView = (CPBView*)GetActiveView(); ASSERT( pView != NULL ); if (pView == NULL || ! pView->IsKindOf( RUNTIME_CLASS( CPBView ) )) return FALSE; g_pStatBarWnd = &m_statBar; g_pImgToolWnd = &m_toolBar; g_pImgColorsWnd = &m_colorBar; pView->SetTools(); return TRUE; } /***************************************************************************/ void CInPlaceFrame::RepositionFrame( LPCRECT lpPosRect, LPCRECT lpClipRect ) { COleIPFrameWnd::RepositionFrame( lpPosRect, lpClipRect ); // The other control bars can overlap and result in mispaints if ( IsWindow(m_wndResizeBar.m_hWnd) ) m_wndResizeBar.Invalidate(); } /***************************************************************************/ void CInPlaceFrame::OnSize(UINT nType, int cx, int cy) { COleIPFrameWnd::OnSize( nType, cx, cy ); TRACE( TEXT("MSPaint New Size %d x %d\n"), cx, cy ); } /***************************************************************************/ // CInPlaceFrame diagnostics #ifdef _DEBUG void CInPlaceFrame::AssertValid() const { COleIPFrameWnd::AssertValid(); } /***************************************************************************/ void CInPlaceFrame::Dump(CDumpContext& dc) const { COleIPFrameWnd::Dump(dc); } #endif //_DEBUG /***************************************************************************/ void CInPlaceFrame::OnSysColorChange() { COleIPFrameWnd::OnSysColorChange(); ResetSysBrushes(); } /***************************************************************************/ void CInPlaceFrame::OnClose() { // TODO: Add your message handler code here and/or call default SaveBarState(TEXT("General")); CancelToolMode (FALSE); COleIPFrameWnd::OnClose(); } void CInPlaceFrame::OnHelpIndex() { ::HtmlHelpA( ::GetDesktopWindow(), "mspaint.chm", HH_DISPLAY_TOPIC, 0L ); } LRESULT CInPlaceFrame::OnContextMenu(WPARAM wParam, LPARAM lParam) { // Just make sure this message does not get passed to the parent return(1); }