home *** CD-ROM | disk | FTP | other *** search
/ Troubleshooting Netware Systems / CSTRIAL0196.BIN / attach / msj / v10n03 / bocole.exe / HELLO.CPP < prev    next >
C/C++ Source or Header  |  1995-03-01  |  3KB  |  117 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, CMDIChildOCF)
  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 | CS_DBLCLKS,
  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.   // Draw embedded parts
  86.   //
  87.   OCFHlpr->OnPaint(dc.m_hDC, dc.m_ps);
  88. }
  89.  
  90. /////////////////////////////////////////////////////////////////////////////
  91. // CHelloWnd command
  92.  
  93. void CHelloWnd::OnUpdateColor(CCmdUI* pCmdUI)
  94. {
  95.   pCmdUI->SetCheck(pCmdUI->m_nID == m_nIDColor);
  96. }
  97.  
  98. void CHelloWnd::OnColor()
  99. {
  100.   m_nIDColor = LOWORD(GetCurrentMessage()->wParam);
  101.   m_clrText = colorArray[m_nIDColor - IDM_BLACK];
  102.  
  103.   // Force the client area text to be repainted in the new color
  104.   Invalidate();
  105. }
  106.  
  107. void CHelloWnd::OnCustomColor()
  108. {
  109.   CColorDialog dlgColor(m_clrText);
  110.   if (dlgColor.DoModal() == IDOK)
  111.   {
  112.     m_clrText = dlgColor.GetColor();
  113.     m_nIDColor = IDM_CUSTOM;
  114.     Invalidate();
  115.   }
  116. }
  117.