|
|
// 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 <htmlhelp.h>
#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); }
|