RTTools.h
上传用户:qhonly
上传日期:2013-06-10
资源大小:487k
文件大小:3k
源码类别:

界面编程

开发平台:

Visual C++

  1. ///////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Tools.h : header file
  4. //
  5. ///////////////////////////////////////////////////////////////////////////////
  6. #pragma once
  7. ///////////////////////////////////////////////////////////////////////////////
  8. // Usefull macros
  9. //
  10. #define KEYDOWN(Key) ((GetKeyState(Key)&0x8000)!=0)
  11. #define ON_WM_MOUSEOUT() 
  12.     { WM_MOUSELEAVE, 0, 0, 0, AfxSig_vv, 
  13.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnMouseOut },
  14. #ifndef lengthof
  15.   #define lengthof(a) (sizeof(a)/sizeof(a[0]))
  16. #endif
  17. ///////////////////////////////////////////////////////////////////////////////
  18. // Check if the specified window is child of a docked toolbar
  19. bool ChildOfDockedToolbar (CWnd* pWnd);
  20. /////////////////////////////////////////////////////////////////////////////
  21. // Constants for detecting OS-Type
  22. enum WinVer
  23. {
  24.     wvUndefined,
  25.     wvWin32s,
  26.     wvWin95,
  27.     wvWin98,
  28.     wvWinME,
  29.     wvWinNT3,
  30.     wvWinNT4,
  31.     wvWin2000,
  32.     wvWinXP,
  33. };
  34. ///////////////////////////////////////////////////////////////////////////////
  35. // Return the current OS-Type
  36. //
  37. WinVer WINAPI GetWinVersion ();
  38. ///////////////////////////////////////////////////////////////////////////////
  39. inline void WINAPI ScreenToClient (HWND hWnd, LPRECT pRect)
  40. {
  41.     ScreenToClient (hWnd, (LPPOINT)pRect);
  42.     ScreenToClient (hWnd, ((LPPOINT)pRect)+1);
  43. }
  44. ///////////////////////////////////////////////////////////////////////////////
  45. inline void WINAPI ClientToScreen (HWND hWnd, LPRECT pRect)
  46. {
  47.     ClientToScreen (hWnd, (LPPOINT)pRect);
  48.     ClientToScreen (hWnd, ((LPPOINT)pRect)+1);
  49. }
  50. ///////////////////////////////////////////////////////////////////////////////
  51. ///////////////////////////////////////////////////////////////////////////////
  52. class CClientRect : public CRect
  53. {
  54. public:
  55.     CClientRect (HWND hWnd)
  56.     {
  57.         ::GetClientRect (hWnd, this);
  58.     };
  59.     CClientRect (const CWnd* pWnd)
  60.     {
  61.         ::GetClientRect (pWnd->GetSafeHwnd(), this);
  62.     };
  63. };
  64. ///////////////////////////////////////////////////////////////////////////////
  65. ///////////////////////////////////////////////////////////////////////////////
  66. class CWindowRect : public CRect
  67. {
  68. public:
  69.     CWindowRect (HWND hWnd)
  70.     {
  71.         ::GetWindowRect (hWnd, this);
  72.     };
  73.     CWindowRect (const CWnd* pWnd)
  74.     {
  75.         ::GetWindowRect (pWnd->GetSafeHwnd(), this);
  76.     };
  77. };
  78. ///////////////////////////////////////////////////////////////////////////////
  79. ///////////////////////////////////////////////////////////////////////////////
  80. class CWindowText : public CString
  81. {
  82. public:
  83.     CWindowText (HWND hWnd)
  84.     {
  85.         CWnd::FromHandle (hWnd)->GetWindowText (*this);
  86.     };
  87.     CWindowText (const CWnd* pWnd)
  88.     {
  89.         pWnd->GetWindowText (*this);
  90.     };
  91. };
  92. ///////////////////////////////////////////////////////////////////////////////
  93. ///////////////////////////////////////////////////////////////////////////////
  94. #define MMS_PAINT   0x0001
  95. #define MMS_NCPAINT 0x0002
  96. ///////////////////
  97. class CMouseMgr
  98. {
  99. public:
  100.     CMouseMgr ();
  101.     void Init (HWND hWnd, WORD wFlags = MMS_PAINT);
  102.     bool MouseOver () const;
  103.     bool OnMouseMove (HWND hTrack = NULL);
  104.     bool OnMouseOut (HWND hTrack = NULL);
  105. protected:
  106.     HWND m_hWnd;
  107.     HWND m_hTrack;
  108.     WORD m_wFlags;
  109.     bool m_bOver;
  110. };