| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 | 
							- // GroupStatic.cpp : implementation file
 
- //
 
- #include "stdafx.h"
 
- #include "cp_main.h"
 
- #include "GroupStatic.h"
 
- #ifdef _DEBUG
 
- #define new DEBUG_NEW
 
- #undef THIS_FILE
 
- static char THIS_FILE[] = __FILE__;
 
- #endif
 
- /////////////////////////////////////////////////////////////////////////////
 
- // CGroupStatic
 
- CGroupStatic::CGroupStatic()
 
- {
 
- 	m_dwTextColor = 0;
 
- 	m_dwBkColor = RGB(255, 255, 255);
 
- }
 
- CGroupStatic::~CGroupStatic()
 
- {
 
- }
 
- BEGIN_MESSAGE_MAP(CGroupStatic, CStatic)
 
- 	//{{AFX_MSG_MAP(CGroupStatic)
 
- 		// NOTE - the ClassWizard will add and remove mapping macros here.
 
- 	//}}AFX_MSG_MAP
 
- END_MESSAGE_MAP()
 
- /////////////////////////////////////////////////////////////////////////////
 
- // CGroupStatic message handlers
 
- BOOL CGroupStatic::OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pLResult) 
 
- {  
 
- #ifndef WIN32
 
-       return CStatic::OnChildNotify(message, wParam, lParam, pLResult);
 
- #else
 
-    // If not setting static control color, do default processing
 
-    if( message != WM_CTLCOLORSTATIC )
 
-       return CStatic::OnChildNotify(message, wParam, lParam, pLResult);
 
-    HDC hdcChild = (HDC)wParam;
 
-    // Set the foreground color
 
-    ::SetTextColor( hdcChild, m_dwTextColor );
 
-    // If a background color is pre-determined
 
-    if(m_dwBkColor != -1)
 
-    {  
 
-       ::SetBkMode(hdcChild, TRANSPARENT);
 
-       ::SetBkColor(hdcChild, m_dwBkColor);  
 
- 	   m_brush.DeleteObject();
 
- 	   m_brush.CreateSolidBrush(m_dwBkColor);
 
-       *pLResult = (LRESULT)(m_brush.GetSafeHandle());
 
-    }
 
-    else
 
-    {
 
-    // Determine the current background color based on my parent window
 
-       static COLORREF clrPrevValid = -1;
 
-       HWND hParent = ::GetParent(m_hWnd);
 
-       HDC  hParentDc = ::GetDC(hParent);
 
-       // Get the color based on the 0, 0 reference
 
-       COLORREF clrParentBkground = ::GetPixel(hParentDc, 0, 0);
 
-       ::ReleaseDC(hParent, hParentDc);
 
-       // If found (not off of the screen or under another window)
 
-       // set my current color to it
 
-       if(clrParentBkground == -1)
 
-       {  clrParentBkground = clrPrevValid;  }
 
-       else
 
-       {  clrPrevValid = clrParentBkground;  }
 
-       // If either the current, or previous color found was not valid
 
-       // allow to perform default processing
 
-       if(clrParentBkground == -1)
 
-       {  return FALSE;  }
 
-       // Set the background mode to transparent
 
-       ::SetBkMode(hdcChild, TRANSPARENT);
 
-       // Set the background color and brush based on my parent's color
 
-       ::SetBkColor(hdcChild, clrParentBkground);  
 
- 	   m_brush.DeleteObject();
 
- 	   m_brush.CreateSolidBrush(clrParentBkground);
 
-       *pLResult = (LRESULT)(m_brush.GetSafeHandle());
 
-    }
 
-    // Return TRUE to indicate that the message was handled
 
-    return TRUE;
 
- #endif
 
- }
 
- /*************************************************************************
 
- *
 
- *************************************************************************/
 
- void CGroupStatic::SetFont( int nPointSize, LPCTSTR lpszFaceName, CDC* pDC )
 
- {
 
-    // If a font has been allocated, delete it
 
-    if( m_pFont )
 
-       delete m_pFont;
 
-    m_pFont = new CFont;
 
-    // Create a font using the given attributes
 
-    m_pFont->CreatePointFont( nPointSize, lpszFaceName, pDC );
 
-    // Set the window's current font to the specified font
 
-    CStatic::SetFont( m_pFont );
 
- }
 
 
  |