home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c480 / 19.ddi / MFC / SAMPLES / MDI / HELLO.CP_ / HELLO.CP
Encoding:
Text File  |  1993-02-08  |  3.1 KB  |  114 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 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 Microsoft
  9. // WinHelp 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(LPCSTR 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.     const char* pszHelloClass =
  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(pszHelloClass, 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("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.  
  114.