PaintManager.cpp
Upload User: kairuinn
Upload Date: 2009-02-07
Package Size: 2922k
Code Size: 86k
Category:

Graph program

Development Platform:

Visual C++

  1. #include "StdAfx.h"
  2. #include "PaintManager.h"
  3. #include "NewMenu.h"
  4. // If you don't want to see extra TRACE diagnostics,
  5. // modify the line below to: #define CCM_TRACE
  6. #define CCM_TRACE TRACE
  7. #define CCM_TIMER_VAL 100        // 100 ms timer period seems to be good enough...
  8. #define MAX_CLASSNAME 64         // Length of buffer for retrieving the class name
  9. ////////////////////////////////////////////////////////////////////////
  10. // CCMControl static members initialization
  11. // skins { 
  12. CBitmap32 CPaintManager::m_bmpButtonSkin;
  13. CBitmap32 CPaintManager::m_bmpCheckSkin;
  14. CBitmap32 CPaintManager::m_bmpRadioSkin;
  15. CBitmap32 CPaintManager::m_bmpSpinDownSkin;
  16. CBitmap32 CPaintManager::m_bmpSpinUpSkin;
  17. CBitmap32 CPaintManager::m_bmpSpinLeftSkin;
  18. CBitmap32 CPaintManager::m_bmpSpinRightSkin;
  19. CBitmap32 CPaintManager::m_bmpSpinDownGlyphSkin;
  20. CBitmap32 CPaintManager::m_bmpSpinUpGlyphSkin;
  21. CBitmap32 CPaintManager::m_bmpSpinLeftGlyphSkin;
  22. CBitmap32 CPaintManager::m_bmpSpinRightGlyphSkin;
  23. // } skins
  24. HWND CPaintManager::CCMControl::m_hWndOld = NULL;
  25. CMapPtrToPtr CPaintManager::m_ctrlMap = 10;
  26. CMapPtrToPtr CPaintManager::m_dlgMap = 10;
  27. BOOL CPaintManager::m_bEnabled = TRUE;
  28. // Changed 02.03.1999 Mike Walter
  29. CMapWordToPtr CPaintManager::m_threadMap = 10;     
  30. ///////////////////////////////////////////////////////////////////////
  31. // Here is the one and only CPaintManager object
  32. static CPaintManager g_ctrlManager;
  33. CPaintManager& GetPaintManager()
  34. {
  35.    return g_ctrlManager;
  36. }
  37. ////////////////////////////////////////////////////////////////////////
  38. // WH_CALLWNDPROC hook procedure
  39. LRESULT CALLBACK CCM_CallWndProc( int nCode, WPARAM wParam, LPARAM lParam )
  40. {   
  41.    HOOKPROC hHookProc;
  42.    if ( g_ctrlManager.m_threadMap.Lookup( (WORD)GetCurrentThreadId(), (void*&)hHookProc ) == FALSE )
  43.    {
  44.       TRACE( "CPaintManager: No hook for this thread installed!n" );
  45.       return 0;
  46.    }
  47.    if ( nCode == HC_ACTION )
  48.    {      
  49.       CWPSTRUCT* pwp = (CWPSTRUCT*)lParam;
  50.       if ( g_ctrlManager.IsEnabled() )
  51.       {
  52.          if ( g_ctrlManager.m_bDialogOnly == TRUE )        
  53.          {
  54.             if ( pwp->message == WM_INITDIALOG )
  55.                g_ctrlManager.Install( pwp->hwnd );
  56.          }
  57.          else if ( pwp->message == WM_CREATE && g_ctrlManager.IsEnabled() )
  58.          {
  59.             TCHAR szBuf[MAX_CLASSNAME];
  60.             if ( GetWindowLong( pwp->hwnd, GWL_STYLE ) & WS_CHILD )
  61.             {
  62.                GetClassName( pwp->hwnd, szBuf, MAX_CLASSNAME );
  63.                if ( lstrcmp( szBuf, _T( "ScrollBar" ) ) ) // Don't add scrollbars
  64.                   g_ctrlManager.AddControl( pwp->hwnd );
  65.             }
  66.          }
  67.       }
  68.    }   
  69.    // Changed 02.03.1999 Mike Walter
  70.    return CallNextHookEx( (HHOOK)hHookProc, nCode, wParam, lParam );
  71. }
  72. // Install a hook for the current thread only
  73. void CPaintManager::InstallHook( TCHAR* lpszFilename, DWORD dwThreadID, BOOL bDialogOnly )
  74. {
  75. //_tcsncpy( m_szSkinLibrary, lpszFilename, MAX_PATH );
  76. // 卿羼