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

📄 xpdialog.h

📁 xp风格的对话框
💻 H
字号:
//////////////////////////////////////////////////////////////////////
// XPDialog.h: interface for the CXPDialog class.
//作者:北斗龙
//Ver:	1.2
//日期:10-6	
//申明:你可以随意使用和修改此代码,但请保留作者名字
//
#if !defined(AFX_XPDIALOG_H__72A3C2BD_4DE8_4D17_BD22_B7D6A6FB3BE9__INCLUDED_)
#define AFX_XPDIALOG_H__72A3C2BD_4DE8_4D17_BD22_B7D6A6FB3BE9__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

struct SCLASSXP
{
	HWND hWnd;					// 窗口句柄
	WNDPROC wpPrev;				// 子类化之前的窗口回调函数地址
	BOOL bNcActive;				// 指示窗体是否处于激活状态
	struct SCLASSXP * pNext;	// 指向下一个 CLASSXP 结构,这里采用单向链表结构
};


class CXPDialog  
{
public:
	CXPDialog();
	~CXPDialog();
	//设置或取消XP风格,当hWnd为空时,则是设置整个线程
	BOOL SetDialogXP(HWND hWnd, BOOL bsetXP=TRUE);
	BOOL IsDialogXP(HWND hWnd);

private:
	HHOOK		m_hPrevHookXP;
	SCLASSXP	*m_phead;
	static	CXPDialog *s_pThis;

	static LRESULT DialogProcXP(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
	static UINT Thread(PVOID P);
	static CALLBACK EnumWndProcXP(HWND hWnd, LPARAM lParam);
	static LRESULT CALLBACK HookProcXP(int iCode, WPARAM wParam, LPARAM lParam);

	SCLASSXP *CreateCXPDialog(HWND hwnd);
	SCLASSXP *DeleteCXPDialog(HWND hwnd);
	SCLASSXP *Find(HWND hwnd);

	void SetRoundWindow(HWND hwnd, BOOL bSet=TRUE, BOOL bRedraw=TRUE);
	void DrawDialog(HWND hwnd);
	enum ButtonType	{ EXIT=0, MAX, RESTORE, MIN, HELP };
	void DrawButton(HWND hWnd, HDC hdc, const CRect &rt, ButtonType iType, BOOL bActive, BOOL bAble, BOOL bMouseOn);
	void DrawCaption(HWND hWnd, HDC hdc, CRect &rt, BOOL bActive);
	void GradientFill(HDC hdc, const CRect &Rect, COLORREF crColor[], int fillType);

	BOOL OnNcLButtonDown(HWND hWnd, WPARAM wParam, LPARAM lParam);
};

#endif // !defined(AFX_XPDIALOG_H__72A3C2BD_4DE8_4D17_BD22_B7D6A6FB3BE9__INCLUDED_)

⌨️ 快捷键说明

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