⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classxp.h

📁 一个学生考试成绩管理的半成品
💻 H
字号:



////////////////////////////////////////////////////////////////////////////////////////////////////
// 工程: ClassXP
// 版本: 0.32
// 更新: 2003-3-10
// 说明: 
//       一、简介
//           ClassXP 是一个为 Windows 98/ME/2000/XP 系统而设计的控件界面库。使用 ClassXP 能非常简单
//       快速地把应用程序界面设置成 Windows XP 的风格。
//
//       二、使用方法
//           ClassXP 开发语言为 Win32SDK/C。如果使用 C++ 类的组织代码将会使编写难度大大降低,但是考
//       虑到在 C 中使用以及效率问题,ClassXP 使用了非 OOP 的编程语言,借用了 OOP 的思维方法。因此,
//       ClassXP 的源代码可以直接在 Visual C++ 的 Win32SDK 和 MFC 等工程中使用。ClassXP 在编写过程中
//       使用的编译环境是 Visual Studio .NET 2002 或 Visual C++ 6.0,可以用两种方式编译:
//
//       1.动态连接库方式
//         (1).在 Visual C++ 中建立空的动态连接库工程,将 ClassXP.c 和 ClassXP.h 文件加入到工程中。
//         (2).编译连接生成动态连接库,其中导出函数 ClassXP(),可在所有的语言中使用。
//
//       2.源代码方式
//         (1).在 Visual C++ 的工程中加入 ClassXP.c 和 ClassXP.h 文件。
//         (2).在要使用 ClassXP() 函数的文件中加入『#include "ClassXP.h"』,然后在调用它。
//
//       三、注意事项
//
//       1.ClassXP 使用了 Windows 中的一些新特性,需要在 Windows 98 及其以上版本中才能使用。
//       2.目前只能将 PushButton、CheckBox、EditBox 和 ComboBox 设置为 ClassXP 风格,这些都没有用到
//         图片,全部都是高效的 GDI 画出来的,有兴趣的话看看源代码……
//
////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////
// 编译预处理
#pragma once
#ifdef _USRDLL
// 定义为连接方式,指定编译为动态连接库
#define CXP_DLLMODE
#endif
////////////////////////////////////////////////////////////////////////////////////////////////////


#if !defined(AFX_CLASSXP_H__F89F6F21_1CEF_11D9_AF5C_0050BAB04A6A__INCLUDED_)
#define AFX_CLASSXP_H__F89F6F21_1CEF_11D9_AF5C_0050BAB04A6A__INCLUDED_



#include <Windows.h>

////////////////////////////////////////////////////////////////////////////////////////////////////
// 宏定义

// 窗口类型
#define CXPT_UNKNOWN		-1	// 不能处理的类型
#define CXPT_PUSHBUTTON		0	// 按钮
#define CXPT_CHECKBOX		1	// 复选框
#define CXPT_RADIOBOX		2	// 单选框
#define CXPT_GROUPBOX		3	// 组窗口
#define CXPT_STATEBOX	    4	// 说明条
#define CXPT_EDITBOX		5	// 编辑框
#define CXPT_COMBOBOX		6	// 组合框
#define CXPT_LISTBOX		7	// 列表框
#define CXPT_SCROLLBOX		8	// 滚动条
#define CXPT_DIALOG		9	// 弹出窗口


// 窗口状态
#define CXPS_DISABLED		0x00000001L		// 禁用状态
#define CXPS_PRESSED		0x00000002L		// 按下状态
#define CXPS_HOTLIGHT		0x00000004L		// 高亮状态 (鼠标在该窗口上)
#define CXPS_FOCUS			0x00000008L		// 具有键盘输入焦点
#define CXPS_DEFAULT		0x00000010L		// 默认状态 (用于按钮)
#define CXPS_CHECKED		0x00000020L		// 选中状态 (用于复选框)
#define CXPS_INDETERMINATE	0x00000040L		// 未确定状态 (用于复选框)
#define CXPS_READONLY		0x00000080L		// 只读状态 (用于编辑框)
#define CXPS_NOPAINT		0x00000100L		// 无效区状态
#define CXPS_PAINT		    0x00000200L		// 有效区状态

////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" BOOL WINAPI ClassXP(HWND hWnd = NULL, BOOL bEnable = TRUE);
#else // __cplusplus
BOOL WINAPI ClassXP(HWND hWnd, BOOL bEnable);
#endif // __cplusplus
// 功能: 设置或取消 ClassXP 风格
// 参数:
//       hWnd		指定要设置或取消窗口的句柄,如果为 NULL 则影响当前线程的所有窗口
//       bEnable	指定设置或取消 ClassXP 风格, TRUE 表示设置,FALSE 表示取消
//
// 返回: TRUE 表示成功,FALSE 表示失败
////////////////////////////////////////////////////////////////////////////////////////////////////

// 强制使用 C 语言方式编译
#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus
////////////////////////////////////////////////////////////////////////////////////////////////////

// 设置窗口状态
#define CXPM_SETSTATE(Data, Mask, IsSet)	((IsSet) ? (Data |= Mask) : (Data &= ~Mask))
////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
// CLASSXP 结构,所有的代码都是围绕这个结构而编写的
typedef struct tagCLASSXP
{
	HWND hWnd;					// 窗口句柄
	DWORD dwType;				// 窗口的类型
	DWORD dwState;				// 窗口的状态
	WNDPROC wpPrev;				// 子类化之前的窗口回调函数地址
	HRGN  hRgn;                 // 圆形窗区域
	HICON hIconDisabled;         //禁止时的图标
	void  *pData;
	struct tagCLASSXP * pNext;	// 指向下一个 CLASSXP 结构,这里采用单向链表结构
}
CLASSXP, * PCLASSXP;
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// MEMDCXP 结构,为了方便使用内存兼容设备场景而设计
typedef struct tagMEMDCXP
{
	HWND hWnd;					// 窗口句柄,输入参数
	HDC hDC;					// 窗口设备场景,输出参数
	HDC hMemDC;					// 窗口内存兼容设备场景,输出参数
	BOOL bTransfer;				// 是否要用在 hDC 和 hMemDC 间传送数据,输入参数
	HBITMAP hBitmap;			// 位图句柄,输入和输出参数
}
MEMDCXP, * LPMEMDCXP;
////////////////////////////////////////////////////////////////////////////////////////////////////




////////////////////////////////////////////////////////////////////////////////////////////////////
// 函数声明
PCLASSXP WINAPI CreateClassXP(HWND hWnd);
PCLASSXP WINAPI DeleteClassXP(HWND hWnd);
PCLASSXP WINAPI GetClassXP(HWND hWnd);

DWORD WINAPI GetWindowTypeXP(HWND hWnd);
HDC WINAPI GetMemDCXP(LPMEMDCXP pMdcxp);
VOID WINAPI ReleaseMemDCXP(LPMEMDCXP pMdcxp);
VOID WINAPI GradientRectXP(HDC hDC, LPRECT pRect,COLORREF crColor[4]);
VOID WINAPI DrawDropGripXP(HDC hDC, LPRECT pRect, COLORREF crColor[4], DWORD crBack);

BOOL CALLBACK EnumWndProcXP(HWND hWnd, LPARAM lParam);
LRESULT CALLBACK HookProcXP(int iCode, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK WindowProcXP(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

//VOID WINAPI DrawPushButtonXP(PCLASSXP pCxp);
//VOID WINAPI DrawCheckBoxXP(PCLASSXP pCxp);
//VOID WINAPI DrawRadioBoxXP(PCLASSXP pCxp);
//VOID WINAPI DrawEditBoxXP(PCLASSXP pCxp);
//VOID WINAPI DrawComboBoxXP(PCLASSXP pCxp);
//VOID WINAPI DrawListBoxXP(PCLASSXP pCxp);
//VOID WINAPI DrawScrollBoxXP(PCLASSXP pCxp);

////////////////////////////////////////////////////////////////////////////////////////////////////

#include "EditXP.H"
#include "ComboXP.H"

////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
}
#endif // __cplusplus
////////////////////////////////////////////////////////////////////////////////////////////////////


#endif // !defined(AFX_CALSSXP_H__F89F6F21_1CEF_11D9_AF5C_0050BAB04A6A__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -