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

📄 tlib.h

📁 fastcopy是一个非常快速的数据拷贝软件
💻 H
📖 第 1 页 / 共 2 页
字号:
	virtual void	EndDialog(int);
	UINT			ResId(void) { return resId; }

	virtual BOOL	EvCreate(LPARAM lParam);
	virtual BOOL	EvCommand(WORD wNotifyCode, WORD wID, LPARAM hwndCtl);
	virtual BOOL	EvSysCommand(WPARAM uCmdType, POINTS pos);
	virtual BOOL	EvQueryOpen(void);

	virtual	BOOL	PreProcMsg(MSG *msg);
	virtual LRESULT	WinProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
};

class TSubClass : public TWin {
protected:
	WNDPROC		oldProc;

public:
	TSubClass(TWin *_parent = NULL);

	virtual BOOL	CreateByWnd(HWND _hWnd);
	virtual	LRESULT	DefWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
};

class TSubClassCtl : public TSubClass {
protected:
public:
	TSubClassCtl(TWin *_parent);

	virtual	BOOL	PreProcMsg(MSG *msg);
};

BOOL TRegisterClass(LPCTSTR class_name, UINT style=CS_DBLCLKS, HICON hIcon=0, HCURSOR hCursor=0, HBRUSH hbrBackground=0, int classExtra=0, int wndExtra=0, LPCTSTR menu_str=0);

class TApp {
protected:
	static TApp	*tapp;
	THash		*hash;
	LPCSTR		defaultClass;

	LPSTR		cmdLine;
	int			nCmdShow;
	TWin		*mainWnd;
	TWin		*preWnd;
	HINSTANCE	hI;

	TWin			*SearchWnd(HWND hWnd) { return (TWin *)hash->GetHashObj((HashID)hWnd); }
	virtual BOOL	InitApp(void);

public:
	TApp(HINSTANCE _hI, LPSTR _cmdLine, int _nCmdShow);
	virtual ~TApp();
	virtual void	InitWindow() = 0;
	virtual int		Run();

	LPCTSTR	GetDefaultClass() { return defaultClass; }
	void	AddWin(TWin *win) { preWnd = win; }
	void	AddWinByWnd(TWin *win, HWND hWnd) { win->hWnd = hWnd; hash->Register(win, (HashID)win->hWnd); }
	void	DelWin(TWin *win) { hash->UnRegister(win); }
	BOOL	PreProcMsg(MSG *msg);

	static TApp *GetApp() { return tapp; }
	static HINSTANCE GetInstance() { return tapp->hI; }
	static LRESULT CALLBACK WinProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam);
};

struct TListObj {
	TListObj *prior, *next;
};

class TList {
protected:
	TListObj	top;

public:
	TList(void);
	void		Init(void);
	void		AddObj(TListObj *obj);
	void		DelObj(TListObj *obj);
	TListObj	*TopObj(void);
	TListObj	*NextObj(TListObj *obj);
	BOOL		IsEmpty() { return	top.next == ⊤ }
	void		MoveList(TList *from_list);
};

#define FREE_LIST	0
#define USED_LIST	1
#define	RLIST_MAX	2
class TRecycleList {
protected:
	char	*data;
	TList	list[RLIST_MAX];

public:
	TRecycleList(int init_cnt, int size);
	~TRecycleList();
	TListObj *GetObj(int list_type);
	void PutObj(int list_type, TListObj *obj);
};

#define MAX_KEYARRAY	30

class TRegistry {
protected:
	HKEY	topKey;
	int		openCnt;
	HKEY	hKey[MAX_KEYARRAY];

public:
	TRegistry(LPCSTR company, LPSTR appName=NULL);
	TRegistry(HKEY top_key);
	~TRegistry();

	void	ChangeTopKey(HKEY topKey);
	BOOL	ChangeApp(LPCSTR company, LPSTR appName=NULL);
	BOOL	GetInt(LPCSTR key, int *val);
	BOOL	SetInt(LPCSTR key, int val);
	BOOL	GetLong(LPCSTR key, long *val);
	BOOL	SetLong(LPCSTR key, long val);
	BOOL	GetStr(LPCSTR key, LPSTR str, int size);
	BOOL	SetStr(LPCSTR key, LPCSTR str);
	BOOL	GetByte(LPCSTR key, BYTE *data, int *size);
	BOOL	SetByte(LPCSTR key, const BYTE *data, int size);
	BOOL	OpenKey(LPCSTR subKey, BOOL createFlg=FALSE);
	BOOL	CreateKey(LPCSTR subKey) { return OpenKey(subKey, TRUE); }
	BOOL	CloseKey(void);
	BOOL	DeleteKey(LPCSTR str);
	BOOL	DeleteValue(LPCSTR str);
	BOOL	EnumKey(DWORD cnt, LPSTR buf, int size);
	BOOL	EnumValue(DWORD cnt, LPSTR buf, int size, DWORD *type=NULL);
	BOOL	DeleteChildTree(LPSTR subkey=NULL);
};

class TInifile {
protected:
	char	*ini_file;
	char	*cur_section;

public:
	TInifile(char *ini_name=NULL);
	~TInifile();
	void Init(char *ini_name=NULL);
	void SetSection(char *section);
	BOOL SetStr(const char *key, const char *val);
	DWORD GetStr(const char *key, char *val, int max_size, const char *default_val="");
	BOOL SetInt(const char *key, int val);
	BOOL DelSection(const char *section);
	BOOL DelKey(const char *key);
	int GetInt(const char *key, int default_val=-1);
	const char *GetIniFileName(void) { return	ini_file; }
};

void InitInstanceForLoadStr(HINSTANCE hI);
LPSTR GetLoadStrA(UINT resId, HINSTANCE hI=NULL);
LPWSTR GetLoadStrW(UINT resId, HINSTANCE hI=NULL);
void TSetDefaultLCID(LCID id=0);
HMODULE TLoadLibrary(LPTSTR dllname);
int MakePath(char *dest, const char *dir, const char *file);
int MakePathW(WCHAR *dest, const WCHAR *dir, const WCHAR *file);
WCHAR lGetCharIncW(const WCHAR **str);
WCHAR lGetCharIncA(const char **str);
WCHAR lGetCharW(const WCHAR *str, int);
WCHAR lGetCharA(const char *str, int);
void lSetCharW(WCHAR *str, int offset, WCHAR ch);
void lSetCharA(char *str, int offset, WCHAR ch);

#define CP_UTF8                   65001       // UTF-8 translation
inline int AtoW(const char *src, WCHAR *dst, int bufsize, int max_len=-1) {
	return	::MultiByteToWideChar(CP_ACP, 0, src, max_len, dst, bufsize);
}
inline int WtoA(const WCHAR *src, char *dst, int bufsize, int max_len=-1) {
	return	::WideCharToMultiByte(CP_ACP, 0, src, max_len, dst, bufsize, 0, 0);
}
inline int WtoU8(const WCHAR *src, char *dst, int bufsize, int max_len=-1) {
	return	::WideCharToMultiByte(CP_UTF8, 0, src, max_len, dst, bufsize, 0, 0);
}
inline int U8toW(const char *src, WCHAR *dst, int bufsize, int max_len=-1) {
	return	::MultiByteToWideChar(CP_UTF8, 0, src, max_len, dst, bufsize);
}

WCHAR *AtoW(const char *src, BOOL noStatic=FALSE);
WCHAR *U8toW(const char *src, BOOL noStatic=FALSE);
char *WtoU8(const WCHAR *src, BOOL noStatic=FALSE);
char *WtoA(const WCHAR *src, BOOL noStatic=FALSE);
char *AtoU8(const char *src, BOOL noStatic=FALSE);
char *U8toA(const char *src, BOOL noStatic=FALSE);

// CryptoAPI for VC4
#ifndef MS_DEF_PROV
typedef unsigned long HCRYPTPROV;
typedef unsigned long HCRYPTKEY;
typedef unsigned long HCRYPTHASH;
typedef unsigned int ALG_ID;
#define ALG_TYPE_RSA			(2 << 9)
#define ALG_TYPE_BLOCK			(3 << 9)
#define ALG_CLASS_DATA_ENCRYPT	(3 << 13)
#define ALG_CLASS_HASH			(4 << 13)
#define ALG_CLASS_KEY_EXCHANGE	(5 << 13)
#define ALG_SID_RSA_ANY			0
#define ALG_TYPE_ANY			0
#define ALG_SID_RC2				2
#define ALG_SID_MD5				3
#define ALG_SID_SHA				4
#define CALG_RSA_KEYX			(ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY)
#define CALG_RC2				(ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2)
#define CALG_MD5				(ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD5)
#define CALG_SHA				(ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_SHA)
#define HP_ALGID 1
#define HP_HASHVAL 2
#define HP_HASHSIZE 4
#define CRYPT_EXPORTABLE		0x00000001
#define PROV_RSA_FULL			1
#define PROV_DSS				3
#define MS_DEF_PROV				"Microsoft Base Cryptographic Provider v1.0"
#define MS_ENHANCED_PROV		"Microsoft Enhanced Cryptographic Provider v1.0"
#define MS_DEF_DSS_PROV			"Microsoft Base DSS Cryptographic Provider"
#define CUR_BLOB_VERSION		0x02
#define CRYPT_NEWKEYSET			0x00000008
#define CRYPT_DELETEKEYSET      0x00000010
#define CRYPT_MACHINE_KEYSET    0x00000020
#define AT_KEYEXCHANGE			1
#define AT_SIGNATURE			2
#define KP_EFFECTIVE_KEYLEN		19	// for CryptSetKeyParam
#define NTE_BAD_KEY				0x80090003L
#endif

extern BOOL (WINAPI *pCryptAcquireContext)(HCRYPTPROV *, LPCSTR, LPCSTR, DWORD, DWORD);
//extern BOOL (WINAPI *pCryptGenRandom)(HCRYPTPROV, DWORD, BYTE *);
extern BOOL (WINAPI *pCryptCreateHash)(HCRYPTPROV, ALG_ID, HCRYPTKEY, DWORD, HCRYPTHASH *);
extern BOOL (WINAPI *pCryptDestroyHash)(HCRYPTHASH);
extern BOOL (WINAPI *pCryptHashData)(HCRYPTHASH, BYTE *, DWORD, DWORD);
extern BOOL (WINAPI *pCryptGetHashParam)(HCRYPTHASH, DWORD, BYTE *, DWORD *, DWORD);
extern BOOL (WINAPI *pCryptReleaseContext)(HCRYPTPROV, DWORD);

#define SHA1_SIZE 20
#define MD5_SIZE  16

BOOL InitWin32API();

class TDigest {
protected:
	HCRYPTPROV	hProv;
	HCRYPTHASH	hHash;

public:
	enum Type { SHA1, MD5 } type;

	TDigest(Type _type=SHA1);
	~TDigest();
	BOOL Init();
	BOOL Reset();
	BOOL Update(void *data, int size);
	BOOL GetVal(void *data);
};

BOOL TGenRandom(void *buf, int len);
BOOL TIsWow64();
BOOL TRegEnableReflectionKey(HKEY hBase);
BOOL TRegDisableReflectionKey(HKEY hBase);
BOOL TWow64DisableWow64FsRedirection(void *oldval);
BOOL TWow64RevertWow64FsRedirection(void *oldval);
BOOL TIsUserAnAdmin();
BOOL TIsEnableUAC();
BOOL TSHGetSpecialFolderPath(HWND, LPSTR, int, BOOL);
BOOL TIsVirtualizedDir(char *path);
BOOL TMakeVirtualStorePath(char *org_path, char *buf);

BOOL InstallExceptionFilter(char *title, char *info);
void Debug(char *fmt,...);

#endif

⌨️ 快捷键说明

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