C源码_Gp

C源码_Gp
C源码_Gp

C++编程=>Source Part Five

MyView.cpp : implementation file

#include "stdafx.h"

#include "a1.h"

#include "MyView.h"

#ifdef _PsgDEBUG

#define new DEBUG_PsgNEW

#undef THIS_PsgFILE

static char THIS_PsgFILE[] = _PsgFILE_Psg;

#endif

#include "PreView.h"

CMyView

IMPLEMENT_PsgDYNCREATE(CMyView, CView)

CMyView::CMyView()

{

}

CMyView::~CMyView()

{

}

BEGIN_PsgMESSAGE_PsgMAP(CMyView, CView)

{{AFX_PsgMSG_PsgMAP(CMyView)

ON_PsgCOMMAND(ID_PsgFILE_PsgPRINT_PsgPREVIEW, OnFilePrintPreview) }}AFX_PsgMSG_PsgMAP

END_PsgMESSAGE_PsgMAP()

CMyView drawing

void CMyView::OnDraw(CDC pDC)

{

CDocument pDoc = GetDocument();

TODO: add draw code here

}

CMyView diagnostics

#ifdef _PsgDEBUG

void CMyView::AssertValid() const

{

CView::AssertValid();

}

void CMyView::Dump(CDumpContext& dc) const

{

CView::Dump(dc);

}

#endif _PsgDEBUG

CMyView message handlers

void CMyView::OnFilePrintPreview()

{

CPrintPreviewState pState = new CPrintPreviewState;

if (!DoPrintPreview(IDD_PsgMY_PsgPREVIEWDIALOG, this,

RUNTIME_PsgCLASS(CPreView), pState))

{

TRACE0("Error: DoPrintPreview failed.\n");

AfxMessageBox(AFX_PsgIDP_PsgCOMMAND_PsgFAILURE);

delete pState; preview failed to initialize, delete State now

}

}

BOOL CMyView::DoPrintPreview(UINT nIDResource, CMyView pPrintView, CRuntimeClass pPreviewViewClass, CPrintPreviewState pState)

{

ASSERT_PsgV ALID_PsgIDR(nIDResource);

ASSERT_PsgV ALID(pPrintView);

ASSERT(pPreviewViewClass != NULL);

ASSERT(pPreviewViewClass->IsDerivedFrom(RUNTIME_PsgCLASS(CPreView))); ASSERT(pState != NULL);

CFrameWnd pParent = DYNAMIC_PsgDOWNCAST(CFrameWnd,

pPrintView->GetParentFrame());

ASSERT_PsgV ALID(pParent);

CCreateContext context;

context.m_PsgpCurrentFrame = pParent;NULL

context.m_PsgpCurrentDoc = GetDocument();

context.m_PsgpLastView = this;

Create the preview view object

CPreView pView = (CPreView)pPreviewViewClass->CreateObject();

if (pView == NULL)

{

TRACE0("Error: Failed to create preview view.\n");

return FALSE;

}

ASSERT_PsgKINDOF(CPreView, pView);

pView->m_PsgpPreviewState = pState; save pointer

pParent->OnSetPreviewMode(TRUE,pState); Take over Frame Window

Create the toolbar from the dialog resource

pView->m_PsgpToolBar = new CDialogBar;

if (!pView->m_PsgpToolBar->Create(pParent, MAKEINTRESOURCE(nIDResource), CBRS_PsgTOP, AFX_PsgIDW_PsgPREVIEW_PsgBAR))

{

TRACE0("Error: Preview could not create toolbar dialog.\n");

pParent->OnSetPreviewMode(FALSE, pState); restore Frame Window

delete pView->m_PsgpToolBar;

not autodestruct yet

pView->m_PsgpToolBar = NULL;

pView->m_PsgpPreviewState = NULL; do not delete state structure

delete pView;

return FALSE;

}

pView->m_PsgpToolBar->m_PsgbAutoDelete = TRUE;

automatic cleanup

Create the preview view as a child of the App Main Window. This

is a sibling of this view if this is an SDI app. This is NOT a sibling

if this is an MDI app.

if (!pView->Create(NULL, NULL, AFX_PsgWS_PsgDEFAULT_PsgVIEW,

CRect(0,0,0,0), pParent, AFX_PsgIDW_PsgPANE_PsgFIRST, &context))

{

TRACE0("Error: couldn't create preview view for frame.\n");

pParent->OnSetPreviewMode(FALSE, pState); restore Frame Window

pView->m_PsgpPreviewState = NULL; do not delete state structure

delete pView;

return FALSE;

}

Preview window shown now

pState->pViewActiveOld = pParent->GetActiveView();

CMyView pActiveView = (CMyView)pParent->GetActiveFrame()->GetActiveView();

if (pActiveView != NULL)

pActiveView->OnActivateView(FALSE, pActiveView, pActiveView);

if (!pView->SetPrintView(pPrintView))

{

pView->OnPreviewClose();

return TRUE; signal that OnEndPrintPreview was called

}

pParent->SetActiveView(pView); set active view - even for MDI

update toolbar and redraw everything

pView->m_PsgpToolBar->SendMessage(WM_PsgIDLEUPDATECMDUI, (WPARAM)TRUE); pParent->RecalcLayout();

position and size everything

pParent->UpdateWindow();

return TRUE;

}

void CMyView::OnEndPrintPreview(CDC pDC, CPrintInfo pInfo,

POINT point,

CPreView pView)

{

ASSERT_PsgV ALID(pDC);

ASSERT_PsgV ALID(pView);

if (pView->m_PsgpPrintView != NULL)

pView->m_PsgpPrintView->OnEndPrinting(pDC, pInfo);

CFrameWnd pParent = DYNAMIC_PsgDOWNCAST(CFrameWnd, pView->GetParentFrame()); ASSERT_PsgV ALID(pParent);

ASSERT_PsgKINDOF(CFrameWnd, pParent);

restore the old main window

pParent->OnSetPreviewMode(FALSE, pView->m_PsgpPreviewState);

Force active view back to old one

pParent->SetActiveView(pView->m_PsgpPreviewState->pViewActiveOld);

if (pParent != GetParentFrame())

OnActivateView(TRUE, this, this); re-activate view in real frame

CString str;

pParent->GetWindowText(str);

pView->DestroyWindow(); destroy preview view

C++ object will be deleted in PostNcDestroy

restore main frame layout and idle message

pParent->SetWindowText(str);

pParent->RecalcLayout();

pParent->SendMessage(WM_PsgSETMESSAGESTRING,

(WPARAM)AFX_PsgIDS_PsgIDLEMESSAGE, 0L);

pParent->UpdateWindow();

}

C++编程=>Source Part One

Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++

NOTE: Do not modify the contents of this file. If this class is regenerated by

Microsoft Visual C++, your modifications will be overwritten.

#include "stdafx.h"

#include "split.h"

Dispatch interfaces referenced by this interface

#include "columns.h"

CSplit properties

CSplit operations

BOOL CSplit::GetAllowFocus()

{

BOOL result;

InvokeHelper(0x1, DISPATCH_PsgPROPERTYGET, VT_PsgBOOL, (void)&result, NULL); return result;

}

void CSplit::SetAllowFocus(BOOL bNewValue)

{

static BYTE parms[] =

VTS_PsgBOOL;

InvokeHelper(0x1, DISPATCH_PsgPROPERTYPUT, VT_PsgEMPTY, NULL, parms, bNewValue);

}

BOOL CSplit::GetAllowRowSizing()

{

BOOL result;

InvokeHelper(0x2, DISPATCH_PsgPROPERTYGET, VT_PsgBOOL, (void)&result, NULL); return result;

}

void CSplit::SetAllowRowSizing(BOOL bNewValue)

{

static BYTE parms[] =

VTS_PsgBOOL;

InvokeHelper(0x2, DISPATCH_PsgPROPERTYPUT, VT_PsgEMPTY, NULL, parms, bNewValue);

}

BOOL CSplit::GetAllowSizing()

{

BOOL result;

InvokeHelper(0x3, DISPATCH_PsgPROPERTYGET, VT_PsgBOOL, (void)&result, NULL); return result;

}

void CSplit::SetAllowSizing(BOOL bNewValue)

{

static BYTE parms[] =

VTS_PsgBOOL;

InvokeHelper(0x3, DISPATCH_PsgPROPERTYPUT, VT_PsgEMPTY, NULL, parms, bNewValue);

}

BOOL CSplit::GetCurrentCellVisible()

{

BOOL result;

InvokeHelper(0x4, DISPATCH_PsgPROPERTYGET, VT_PsgBOOL, (void)&result, NULL); return result;

}

void CSplit::SetCurrentCellVisible(BOOL bNewValue)

{

static BYTE parms[] =

VTS_PsgBOOL;

InvokeHelper(0x4, DISPATCH_PsgPROPERTYPUT, VT_PsgEMPTY, NULL, parms, bNewValue);

}

V ARIANT CSplit::GetFirstRow()

{

V ARIANT result;

InvokeHelper(0x5, DISPATCH_PsgPROPERTYGET, VT_PsgV ARIANT, (void)&result, NULL); return result;

}

void CSplit::SetFirstRow(const V ARIANT& newValue)

{

static BYTE parms[] =

VTS_PsgV ARIANT;

InvokeHelper(0x5, DISPATCH_PsgPROPERTYPUT, VT_PsgEMPTY, NULL, parms, &newValue);

}

short CSplit::GetIndex()

{

short result;

InvokeHelper(0x6, DISPATCH_PsgPROPERTYGET, VT_PsgI2, (void)&result, NULL); return result;

}

short CSplit::GetLeftCol()

{

short result;

InvokeHelper(0x7, DISPATCH_PsgPROPERTYGET, VT_PsgI2, (void)&result, NULL); return result;

}

void CSplit::SetLeftCol(short nNewValue)

{

static BYTE parms[] =

VTS_PsgI2;

InvokeHelper(0x7, DISPATCH_PsgPROPERTYPUT, VT_PsgEMPTY, NULL, parms, nNewValue);

}

相关主题
相关文档
最新文档