home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / mfc / advanced / mtmdi / hello.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1998-03-27  |  3.1 KB  |  113 lines

  1. // hello.cpp : Defines the class behaviors for the Hello child window.
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. //
  13.  
  14. #include "stdafx.h"
  15. #include "hello.h"
  16. #include "mdi.h"
  17.  
  18. /////////////////////////////////////////////////////////////////////////////
  19. // CHelloWnd Member Functions
  20.  
  21. BEGIN_MESSAGE_MAP(CHelloWnd, CMDIChildWnd)
  22.     //{{AFX_MSG_MAP(CHelloWnd)
  23.     ON_WM_PAINT()
  24.     ON_COMMAND(IDM_BLACK, OnColor)
  25.     ON_COMMAND(IDM_CUSTOM, OnCustomColor)
  26.     ON_COMMAND(IDM_RED, OnColor)
  27.     ON_COMMAND(IDM_GREEN, OnColor)
  28.     ON_COMMAND(IDM_BLUE, OnColor)
  29.     ON_COMMAND(IDM_WHITE, OnColor)
  30.     ON_UPDATE_COMMAND_UI(IDM_BLACK, OnUpdateColor)
  31.     ON_UPDATE_COMMAND_UI(IDM_BLUE, OnUpdateColor)
  32.     ON_UPDATE_COMMAND_UI(IDM_GREEN, OnUpdateColor)
  33.     ON_UPDATE_COMMAND_UI(IDM_RED, OnUpdateColor)
  34.     ON_UPDATE_COMMAND_UI(IDM_WHITE, OnUpdateColor)
  35.     ON_UPDATE_COMMAND_UI(IDM_CUSTOM, OnUpdateColor)
  36.     //}}AFX_MSG_MAP
  37. END_MESSAGE_MAP()
  38.  
  39. CMenu NEAR CHelloWnd::menu;     // menu for all HELLO windows
  40.  
  41. /////////////////////////////////////////////////////////////////////////////
  42. // CHelloWnd construction
  43.  
  44. BOOL CHelloWnd::Create(LPCTSTR szTitle, LONG style /* = 0 */,
  45.     const RECT& rect /* = rectDefault */,
  46.     CMDIFrameWnd* parent /* = NULL */)
  47. {
  48.     // Setup the shared menu
  49.     if (menu.m_hMenu == NULL)
  50.         menu.LoadMenu(IDR_HELLO);
  51.     m_hMenuShared = menu.m_hMenu;
  52.  
  53.     // Register a custom WndClass and create a window.
  54.     // This must be done because CHelloWnd has a custom icon.
  55.  
  56.     LPCTSTR lpszHelloClass =
  57.           AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,
  58.             LoadCursor(NULL, IDC_ARROW),
  59.             (HBRUSH) (COLOR_WINDOW+1),
  60.             LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_HELLO)));
  61.  
  62.     return CMDIChildWnd::Create(lpszHelloClass, szTitle, style, rect, parent);
  63. }
  64.  
  65. CHelloWnd::CHelloWnd()
  66. {
  67.     m_nIDColor = IDM_BLACK;
  68.     m_clrText = RGB(0, 0, 0);
  69. }
  70.  
  71. // OnPaint:
  72. // Draw a string in the center of the client area.
  73. //
  74. void CHelloWnd::OnPaint()
  75. {
  76.     CPaintDC dc(this);
  77.     CRect rect;
  78.  
  79.     dc.SetTextColor(m_clrText);
  80.     dc.SetBkColor(::GetSysColor(COLOR_WINDOW));
  81.     GetClientRect(rect);
  82.     dc.DrawText(_T("Hello, World!"), -1, rect,
  83.         DT_SINGLELINE | DT_CENTER | DT_VCENTER);
  84. }
  85.  
  86. /////////////////////////////////////////////////////////////////////////////
  87. // CHelloWnd command
  88.  
  89. void CHelloWnd::OnUpdateColor(CCmdUI* pCmdUI)
  90. {
  91.     pCmdUI->SetCheck(pCmdUI->m_nID == m_nIDColor);
  92. }
  93.  
  94. void CHelloWnd::OnColor()
  95. {
  96.     m_nIDColor = LOWORD(GetCurrentMessage()->wParam);
  97.     m_clrText = colorArray[m_nIDColor - IDM_BLACK];
  98.  
  99.     // Force the client area text to be repainted in the new color
  100.     Invalidate();
  101. }
  102.  
  103. void CHelloWnd::OnCustomColor()
  104. {
  105.     CColorDialog dlgColor(m_clrText);
  106.     if (dlgColor.DoModal() == IDOK)
  107.     {
  108.         m_clrText = dlgColor.GetColor();
  109.         m_nIDColor = IDM_CUSTOM;
  110.         Invalidate();
  111.     }
  112. }
  113.