MINIFRM.CPP
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:
Windows编程
开发平台:
Visual C++
- // 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);
- }