home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
msdn_vcb
/
samples
/
vc98
/
mfc
/
general
/
propdlg
/
minifrm.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1998-03-26
|
3KB
|
96 lines
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1998 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#include "stdafx.h"
#include "shapeobj.h"
#include "resource.h"
#include "colorpge.h"
#include "stylepge.h"
#include "propsht2.h"
#include "minifrm.h"
#include "mainfrm.h"
BEGIN_MESSAGE_MAP(CShapePropSheetFrame, CMiniFrameWnd)
//{{AFX_MSG_MAP(CShapePropSheetFrame)
ON_WM_CREATE()
ON_WM_CLOSE()
ON_WM_SETFOCUS()
ON_WM_ACTIVATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
CShapePropSheetFrame::CShapePropSheetFrame()
{
m_pModelessShapePropSheet = NULL;
}
int CShapePropSheetFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMiniFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
m_pModelessShapePropSheet = new CModelessShapePropSheet(this);
if (!m_pModelessShapePropSheet->Create(this,
WS_CHILD | WS_VISIBLE, 0))
{
delete m_pModelessShapePropSheet;
m_pModelessShapePropSheet = NULL;
return -1;
}
// Resize the mini frame so that it fits around the child property
// sheet.
CRect rectClient, rectWindow;
m_pModelessShapePropSheet->GetWindowRect(rectClient);
rectWindow = rectClient;
// CMiniFrameWnd::CalcWindowRect adds the extra width and height
// needed from the mini frame.
CalcWindowRect(rectWindow);
SetWindowPos(NULL, rectWindow.left, rectWindow.top,
rectWindow.Width(), rectWindow.Height(),
SWP_NOZORDER | SWP_NOACTIVATE);
m_pModelessShapePropSheet->SetWindowPos(NULL, 0, 0,
rectClient.Width(), rectClient.Height(),
SWP_NOZORDER | SWP_NOACTIVATE);
return 0;
}
void CShapePropSheetFrame::OnClose()
{
// Instead of closing the modeless property sheet, just hide it.
CMainFrame* pMainFrame = STATIC_DOWNCAST(CMainFrame, AfxGetMainWnd());
pMainFrame->HideModelessPropSheet();
}
void CShapePropSheetFrame::OnSetFocus(CWnd* /*pOldWnd*/)
{
// Forward focus to the embedded property sheet
ASSERT_VALID(m_pModelessShapePropSheet);
m_pModelessShapePropSheet->SetFocus();
}
void CShapePropSheetFrame::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
CMiniFrameWnd::OnActivate(nState, pWndOther, bMinimized);
// Forward any WM_ACTIVATEs to the property sheet...
// Like the dialog manager itself, it needs them to save/restore the focus.
ASSERT_VALID(m_pModelessShapePropSheet);
// Use GetCurrentMessage to get unmodified message data.
const MSG* pMsg = GetCurrentMessage();
ASSERT(pMsg->message == WM_ACTIVATE);
m_pModelessShapePropSheet->SendMessage(pMsg->message, pMsg->wParam,
pMsg->lParam);
}