📄 tlib.h
字号:
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 + -