CXPBase.h
上传用户:dengkfang
上传日期:2008-12-30
资源大小:5233k
文件大小:5k
源码类别:

CA认证

开发平台:

Visual C++

  1. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. // 预处理
  3. #pragma once
  4. #include "CXPDefine.h"
  5. #include "CXPMacro.h"
  6. #include "CXPColor.h"
  7. #include "ClassXP.h"
  8. #include <Windows.h>
  9. #include <CommCtrl.h>
  10. #pragma warning(disable: 4311)
  11. #pragma warning(disable: 4312)
  12. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  13. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  14. // 保持与 Visual C++ 6.0 兼容
  15. #if (_MSC_VER < 1300)
  16. typedef LPCSTR PCSTR;
  17. typedef LPCSTR PCSTR;
  18. typedef LPSTR PSTR;
  19. typedef LPTSTR PTSTR;
  20. typedef LPCTSTR PCTSTR;
  21. typedef LPVOID PVOID;
  22. #endif
  23. #ifndef GWLP_WNDPROC
  24. #define GWLP_WNDPROC GWL_WNDPROC
  25. #define SetWindowLongPtr SetWindowLong
  26. typedef LONG LONG_PTR;
  27. #else
  28. #pragma warning(disable:4244)
  29. #endif
  30. #ifndef BS_TYPEMASK
  31. #define BS_TYPEMASK 0x0000000F
  32. #endif
  33. #ifndef CBS_TYPEMASK
  34. #define CBS_TYPEMASK 0x00000003
  35. #endif
  36. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  37. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  38. // CLASSXP 结构
  39. typedef struct tagCLASSXP
  40. {
  41. UINT uClass; // 类
  42. PCTSTR ptzClass; // 类名
  43. VOID (*pDraw)(PCLASSXP); // 绘制函数
  44. WNDPROC wpProc; // 回调函数地址
  45. WNDPROC wpPrev; // 原来的回调函数地址
  46. LPARAM lParam; // 自定义数据
  47. LONG lState; // 状态
  48. LONG lStyle; // 风格
  49. HWND hWnd; // 句柄
  50. }
  51. CLASSXP, *PCLASSXP;
  52. typedef const PCLASSXP PCCLASSXP;
  53. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  54. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  55. // 窗口消息 HOOK 回调函数
  56. LRESULT CALLBACK CXPHookProc(INT iCode, WPARAM wParam, LPARAM lParam);
  57. // 枚举窗口回调函数
  58. BOOL CALLBACK CXPEnumProc(HWND hWnd, LPARAM lParam);
  59. // 设置或取消窗口 ClassXP
  60. BOOL CXPSet(HWND hWnd, BOOL bClassXP);
  61. // 获取窗口类
  62. BOOL CXPGetClass(PCLASSXP pCxp);
  63. // 获取窗口状态
  64. BOOL CXPGetState(PCLASSXP pCxp);
  65. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  66. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  67. // 通用消息处理
  68. LRESULT CXPCommonProc(PCLASSXP pCxp, UINT uMsg, WPARAM wParam, LPARAM lParam);
  69. // 按钮回调函数
  70. LRESULT CALLBACK CXPButtonProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  71. // 编辑框回调函数
  72. LRESULT CALLBACK CXPEditBoxProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  73. // 组合框回调函数
  74. LRESULT CALLBACK CXPComboBoxProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  75. // 旋转控件回调函数
  76. LRESULT CALLBACK CXPSpinBoxProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  77. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  78. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  79. // 绘制按钮
  80. VOID CXPDrawPushButton(PCCLASSXP pCxp);
  81. // 绘制选框
  82. VOID CXPDrawCheckBox(PCCLASSXP pCxp);
  83. // 绘制编辑框
  84. VOID CXPDrawEditBox(PCCLASSXP pCxp);
  85. // 绘制组合框
  86. VOID CXPDrawComboBox(PCCLASSXP pCxp);
  87. // 绘制旋转控件
  88. VOID CXPDrawSpinBox(PCCLASSXP pCxp);
  89. // 绘制滚动条
  90. VOID CXPDrawScrollBar(PCCLASSXP pCxp);
  91. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  92. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  93. // 追踪鼠标移出消息
  94. BOOL CXPTrackMouseLeave(HWND hWnd);
  95. // 绘制箭头
  96. VOID CXPDrawArrow(HDC hDC, UINT x, UINT y, UINT uDir, COLORREF crColor);
  97. // 位图混合
  98. VOID CXPDibBlend(PBYTE pbDst, PBYTE pbSrc, UINT uPixel);
  99. // 位图混合水平扩展
  100. VOID CXPDibBlendHorzExt(PBYTE pbDst, UINT uDstWidth, PBYTE pbSrc, UINT uSrcWidth, UINT uHeight);
  101. // 位图混合垂直扩展
  102. VOID CXPDibBlendVertExt(PBYTE pbDst, UINT uDstHeight, PBYTE pbSrc, UINT uWidth, UINT uSrcHeight);
  103. // 背景混合扩展
  104. VOID CXPDibBlendExt(PBYTE pbDst, UINT uDstWidth, UINT uDstHeight, PBYTE pbSrc, UINT uSrcWidth, UINT uSrcHeight);
  105. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  106. ////////////////////////////////////////////////////////////////////////////////////////////////////
  107. ////////////////////////////////////////////////////////////////////////////////////////////////////