📄 xpdialog.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 + -