- Code/Resource
- Windows Develop
- Linux-Unix program
- Internet-Socket-Network
- Web Server
- Browser Client
- Ftp Server
- Ftp Client
- Browser Plugins
- Proxy Server
- Email Server
- Email Client
- WEB Mail
- Firewall-Security
- Telnet Server
- Telnet Client
- ICQ-IM-Chat
- Search Engine
- Sniffer Package capture
- Remote Control
- xml-soap-webservice
- P2P
- WEB(ASP,PHP,...)
- TCP/IP Stack
- SNMP
- Grid Computing
- SilverLight
- DNS
- Cluster Service
- Network Security
- Communication-Mobile
- Game Program
- Editor
- Multimedia program
- Graph program
- Compiler program
- Compress-Decompress algrithms
- Crypt_Decrypt algrithms
- Mathimatics-Numerical algorithms
- MultiLanguage
- Disk/Storage
- Java Develop
- assembly language
- Applications
- Other systems
- Database system
- Embeded-SCM Develop
- FlashMX/Flex
- source in ebook
- Delphi VCL
- OS Develop
- MiddleWare
- MPI
- MacOS develop
- LabView
- ELanguage
- Software/Tools
- E-Books
- Artical/Document
DMDOC.CPP
Package: MSDN_VC98.zip [view]
Upload User: bangxh
Upload Date: 2007-01-31
Package Size: 42235k
Code Size: 10k
Category:
Windows Develop
Development Platform:
Visual C++
- // dmdoc.cpp
- //
- // 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.
- //
- // Purpose: implementation of the CDynaMenuDoc class
- //
- // Functions:
- // Most of this file was generated by AppWizard. The functions
- // which contain code specific to this sample are:
- //
- // CDynaMenuDoc::CDynaMenuDoc() -- document constructor
- // CDynaMenuDoc::DoSelectColor() -- handle text color commands
- // CDynaMenuDoc::DoUpdateSelectColor() -- update text color UI objects
- // CDynaMenuDoc::GetMessageString() -- get status msg for color cmds
- // CDynaMenuDoc::OnCmdMsg() -- perform command routing
- // CDynaMenuDoc::OnColorOptions() -- display color options dialog
- #include "stdafx.h"
- #include "dynamenu.h"
- #include "dmdoc.h"
- #include "coloropt.h" // for CColorOptDlg
- #include "mdichild.h" // for CDynaMDIChildWnd
- #ifdef _DEBUG
- #undef THIS_FILE
- static char BASED_CODE THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // This table defines the possible text colors which will be displayed in
- // the color options dialog. The colors selected in the options dialog
- // for a document will appear on the Color submenu when that document is
- // active.
- //
- DynaMenuDef CDynaMenuDoc::m_aColorDef[NUM_TEXTCOLOR] =
- {
- { IDS_BLACK, ID_COLOR1, RGB(0, 0, 0) },
- { IDS_RED, ID_COLOR2, RGB(128, 0, 0) },
- { IDS_PURPLE, ID_COLOR3, RGB(128, 0, 128) },
- { IDS_BLUE, ID_COLOR4, RGB(0, 0, 128) },
- };
- /////////////////////////////////////////////////////////////////////////////
- // CDynaMenuDoc
- IMPLEMENT_DYNCREATE(CDynaMenuDoc, CDocument)
- BEGIN_MESSAGE_MAP(CDynaMenuDoc, CDocument)
- //{{AFX_MSG_MAP(CDynaMenuDoc)
- ON_COMMAND(ID_COLOR_OPTIONS, OnColorOptions)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- #define new DEBUG_NEW
- /////////////////////////////////////////////////////////////////////////////
- // CDynaMenuDoc construction/destruction
- CDynaMenuDoc::CDynaMenuDoc()
- {
- // Initialize document data. Start out by allowing all possible
- // text colors and default to using the first one.
- m_iColor = 0;
- for (int i = 0; i < NUM_TEXTCOLOR; i++)
- m_abAllowColor[i] = TRUE;
- }
- CDynaMenuDoc::~CDynaMenuDoc()
- {
- }
- BOOL CDynaMenuDoc::OnNewDocument()
- {
- if (!CDocument::OnNewDocument())
- return FALSE;
- // TODO: add reinitialization code here
- // (SDI documents will reuse this document)
- return TRUE;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CDynaMenuDoc serialization
- void CDynaMenuDoc::Serialize(CArchive& ar)
- {
- if (ar.IsStoring())
- {
- // TODO: add storing code here
- }
- else
- {
- // TODO: add loading code here
- }
- }
- /////////////////////////////////////////////////////////////////////////////
- // CDynaMenuDoc diagnostics
- #ifdef _DEBUG
- void CDynaMenuDoc::AssertValid() const
- {
- CDocument::AssertValid();
- }
- void CDynaMenuDoc::Dump(CDumpContext& dc) const
- {
- CDocument::Dump(dc);
- }
- #endif //_DEBUG
- /////////////////////////////////////////////////////////////////////////////
- // CDynaMenuDoc implementation
- //***********************************************************************
- // Function: CDynaMenuDoc::OnCmdMsg()
- //
- // Purpose:
- // OnCmdMsg() is called by the framework to route and dispatch
- // command messages and to handle the update of command
- // user-interface objects.
- //
- // Here we extend the standard command routing to intercept command
- // messages with variable command IDs. In this sample, the
- // currently defined text color options are stored in
- // CDynaMenuDoc::m_aColorDef. Each element of this array contains
- // the command ID associated with that color. When a command ID
- // is passed to this function, we search m_aColorDef for a matching
- // command ID. If one is found, we process the message. Otherwise,
- // we route the command to the standard OnCmdMsg processing.
- //
- // Parameters:
- // nID -- contains the command ID
- // nCode -- identifies the command notification code
- // pExtra -- used according to the value of nCode
- // pHandlerInfo -- if not NULL, filled in with pTarget and pmf
- // members of CMDHANDLERINFO structure, instead
- // of dispatching the command. Typically NULL.
- //
- // Returns:
- // nonzero if message handled, otherwise 0.
- //
- // Comments:
- // See the documentation for CCmdTarget::OnCmdMsg() for further
- // information. Command routing is also discussed in tech note #21.
- //
- //***********************************************************************
- BOOL CDynaMenuDoc::OnCmdMsg(UINT nID, int nCode, void* pExtra,
- AFX_CMDHANDLERINFO* pHandlerInfo)
- {
- // If pHandlerInfo is NULL, then handle the message
- if (pHandlerInfo == NULL)
- {
- // Filter the commands sent to a text color menu option
- for (int i = NUM_TEXTCOLOR-1; i >= 0; i--)
- {
- if (nID == m_aColorDef[i].m_nID)
- {
- if (nCode == CN_COMMAND)
- {
- // Handle WM_COMMAND message
- DoSelectColor(i);
- }
- else if (nCode == CN_UPDATE_COMMAND_UI)
- {
- // Update UI element state
- DoUpdateSelectColor(i, (CCmdUI*)pExtra);
- }
- return TRUE;
- }
- }
- }
- // If we didn't process the command, call the base class
- // version of OnCmdMsg so the message-map can handle the message
- return CDocument::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
- }
- //***********************************************************************
- // Function: CDynaMenuDoc::DoSelectColor()
- //
- // Purpose:
- // DoSelectColor processes text color command messages for
- // CDynaMenuDoc::OnCmdMsg(). It updates the document member variable
- // m_iColor and calls UpdateAllViews() to redraw the document's
- // views.
- //
- // Parameters:
- // iColor -- index into CDynaMenuDoc::m_aColorDef for new
- // color selection
- //
- // Returns:
- // none.
- //
- // Comments:
- // In the debug version, an assert is generated if the index is
- // out of bounds or if the specified color is not currently
- // enabled for the document.
- //
- //***********************************************************************
- void CDynaMenuDoc::DoSelectColor(int iColor)
- {
- ASSERT(iColor >= 0 && iColor < NUM_TEXTCOLOR);
- ASSERT(m_abAllowColor[iColor] == TRUE);
- m_iColor = iColor;
- UpdateAllViews(NULL);
- }
- //***********************************************************************
- // Function: CDynaMenuDoc::DoUpdateSelectColor()
- //
- // Purpose:
- // DoUpdateSelectColor handled the updates to user-interface objects
- // associated with text color command messages for
- // CDynaMenuDoc::OnCmdMsg(). If the item is associated with the
- // currently selected text color for the document, the item is checked.
- //
- // Parameters:
- // iColor -- index into CDynaMenuDoc::m_aColorDef for new
- // color selection
- //
- // Returns:
- // none.
- //
- // Comments:
- // In the debug version, an assert is generated if the index is
- // out of bounds or if the item is disabled for the document.
- //
- //***********************************************************************
- void CDynaMenuDoc::DoUpdateSelectColor(int iColor, CCmdUI* pCmdUI)
- {
- ASSERT(iColor >= 0 && iColor < NUM_TEXTCOLOR);
- ASSERT(m_abAllowColor[iColor] == TRUE);
- pCmdUI->SetCheck(m_iColor == iColor);
- pCmdUI->Enable(TRUE);
- }
- //***********************************************************************
- // Function: CDynaMenuDoc::GetMessageString()
- //
- // Purpose:
- // GetMessageString formats and returns a string containing the
- // message text to display in a status bar for any of the color
- // selection commands.
- //
- // Parameters:
- // nID -- command ID to get message for
- // strMessage -- buffer to fill with message
- //
- // Returns:
- // TRUE if nID is a color selection command ID, otherwise FALSE.
- //
- // Comments:
- // If the function returns FALSE, strMessage is not changed
- //
- //***********************************************************************
- BOOL CDynaMenuDoc::GetMessageString(UINT nID, CString& strMessage)
- {
- for (int i = 0; i < NUM_TEXTCOLOR; i++)
- {
- if (m_aColorDef[i].m_nID == nID)
- {
- CString strColor;
- strColor.LoadString(m_aColorDef[i].m_nString);
- AfxFormatString1(strMessage, IDS_COLORHELPFMT, strColor);
- return TRUE;
- }
- }
- return FALSE;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CDynaMenuDoc commands
- //***********************************************************************
- // Function: CDynaMenuDoc::OnColorOptions()
- //
- // Purpose:
- // OnColorOptions displays a dialog which allows the user to pick
- // the text colors which should be displayed on the Color submenu
- // when the document is active.
- //
- // Parameters:
- // none.
- //
- // Returns:
- // none.
- //
- // Comments:
- // none.
- //
- //***********************************************************************
- void CDynaMenuDoc::OnColorOptions()
- {
- CColorOptDlg dlg(this);
- if (dlg.DoModal())
- {
- // find the MDI frame window associated with this document
- POSITION pos = GetFirstViewPosition();
- CView* pview = GetNextView(pos);
- ASSERT(pview != NULL);
- CDynaMDIChildWnd* pwnd = (CDynaMDIChildWnd*)pview->GetParentFrame();
- ASSERT_KINDOF(CDynaMDIChildWnd, pwnd);
- // force an update of the Color submenu
- pwnd->RefreshColorMenu();
- }
- }