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

📄 utils.h

📁 虚拟打印机
💻 H
字号:
/* * * utils.h *   Copyright (C) 2006 Michael H. Overlin   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA      Contact at poster_printer@yahoo.com */#ifndef UTILS_H#define UTILS_H#include "debug.h"#include <windows.h>#include <winspool.h>#include <malloc.h>#include <string>#include <stdlib.h>#if DBG#define SHOULD(b)		{ if (!(b)) DEBUGMESSAGE( ("FAILURE CONDITION ENCOUNTERED") ); }#else#define SHOULD(b)#endif#if DBG#define ASSERT(b)		{ if (!(b)) DebugBreak(); }#else#define ASSERT(b)#endif#ifdef DBG#define ASSERTFAIL()	{ ASSERT(0); }#else#define ASSERTFAIL()#endif//#define MAX(x,y)		( ( (x) > (y) ) ? (x) : (y) )#define ARRCOUNT(a)		( sizeof(a) / sizeof( (a)[0] ) )#define AnsiToUniCode(pstr,pwstr,cch)    \            MultiByteToWideChar(CP_ACP,0,(pstr),(cch),(pwstr),(cch))#define UniCodeToAnsi(pstr,pwstr,cch)    \            WideCharToMultiByte(CP_ACP,0,(pwstr),(cch),(pstr),(cch),NULL,NULL)template<class T> void swap(T& a, T& b) { T temp = a; a = b; b = temp; }// LOGICAL EXCLUSIVE ORinline BOOL lxor(const BOOL b1, const BOOL b2) { return (!b1) != (!b2); }class EnumWindows {public:	EnumWindows(void);	virtual ~EnumWindows();	BOOL  EnumChildWindows(HWND hwndParent);	virtual BOOL EnumProc(HWND hwndEnum) = 0;private:	static BOOL CALLBACK TheirEnumProc(HWND hwndEnum, LPARAM lParam);};// CALLER IS RESPONSIBLE FOR FREEING THE MALLOC'D BUFFER RETURNED// lptstrExt MUST INLCUDE A PERIOD// FUNCTION CAN DEAL WITH FILE NAME ENDING IN A SINGLE PERIOD // (IT MAY BE THAT THE OS CONSIDERS MULTIPLE ADJACENT PERIODS TO BE EQUIVALENT TO A SINGLE PERIOD, NOT SURE)LPTSTR AddExtToFileName(LPCTSTR lptstrFileName, LPCTSTR lptstrExt) ;BOOL CenterWindowAboveParent(HWND hwnd) ;BOOL CenterWindowHorizontallyInDialog(HWND hwndCtrl, HWND hDlg) ;// WORKS BY TRYING TO OPEN THE FILE FOR READING (FLAG OPEN_EXISTING)BOOL FileExists(LPCTSTR lptstrFileName) ;// FUNCTOIN RETURNS TRUE IF FILE NAME CONTAINS A PERIOD IN THE PORTION AFTER ANY DIRECTORY// NAME AND DRIVE NAMEBOOL FileNameSpecifiesExt(LPCTSTR lptstrFileName) ;// CALLER IS RESPONSIBLE FOR FREEING THE MALLOC'D BUFFER RETURNEDLPTSTR GetSystemErrorMessage(IN DWORD dwErr) ; // CALLER IS RESPONSIBLE FOR FREEING THE MALLOC'D BUFFER RETURNEDLPTSTR GetFileNameAndExt(LPCTSTR lptstrFilePath) ;// CALLER IS RESPONSIBLE FOR FREEING THE MALLOC'D BUFFER RETURNEDLPTSTR GetFileExt(LPCTSTR lptstrFilePath) ;// WORKS BY FIRST TESTING IF THE FILE EXISTS USING "FileExists".  IF SO, RETURNS TRUE,// ELSE IT TRIES TO CREATE THE FILE USING THE FLAGE "CREATE_NEW" WHICH WILL ONLY CREATE A NON-EXISTING// FILE AND WON'T OPEN AN EXISTING ONE.  IF THIS SUCCEEDS, IT CLOSES THEN DELETES THE FILE AND RETURNS TRUE.// OTHERWISE RETURNS FALSEBOOL IsFileNameValid(LPCTSTR lptstrFileName) ;// CALLER IS RESPONSIBLE FOR FREEING THE MALLOC'D BUFFER RETURNEDLPTSTR MakeFullFileName(IN LPCTSTR lptstrDir, IN LPCTSTR lptstrFileName, IN LPCTSTR lptstrExt = NULL) ;// CALLER IS RESPONSIBLE FOR FREEING THE MALLOC'D BUFFER RETURNED// THE LAST ARGUMENT MUST BE NULLLPTSTR MyCatStrings(LPCTSTR lptstrArg, ...) ;// CALLER IS RESPONSIBLE FOR FREEING THE MALLOC'D BUFFER RETURNED// THE LAST ARGUMENT MUST BE NULL// IF bIncludeNullTerms IS TRUE, BUFFER RETURNED IS SEQUENCE OF STRINGS NULL TERMINATED, WITH AN EXTRA FINAL NULL TERMINATION// TO INDICATE THE END// IF bIncludeNullTerms IS FALSE, BUFFER RETURNED IS THE NORMAL CONCATENATION OF ALL STRINGS// THE SAME AS RETURNED BY ABOVE "MyCatStrings"LPTSTR MyCatStringsString(BOOL bIncludeNullTerms, LPCTSTR lptstrArg, ...) ;// va_list VERSION OF ABOVELPTSTR vMyCatStringsString(BOOL bIncludeNullTerms, LPCTSTR lptstrArg, va_list& in_vaList) ;// THE LAST ARGUMENT MUST BE NULL// CALLER IS RESPONSIBLE FOR FREEING RETURNED MALLOC'D BUFF // WHICH IS A NULL-TERMINATED ARRAY OF LPSTSTR STRING PTRS// "MyFreeStringPtrs" WILL FREE THE BUFFERS AND THE STRING PTRS IT CONTAINS AS WELLLPTSTR *MyCatStringPtrs(LPTSTR lptstrArg, ...) ;// FREES A NULL-TERMINATED ARRAY OF POINTERS AND THE POINTER TO THE ARRAY ALSOvoid MyFreeStringPtrs(LPTSTR *plptstr) ;LPTSTR MyGetWindowText(IN HWND hwnd);void MyProcessMessage(MSG& msg);BOOL ScreenToClient(OUT RECT& r, IN HWND hwnd);size_t StringBufferSize(IN LPCTSTR lptstr);LPTSTR StringDuplicate(IN LPCTSTR lptstr);#endif

⌨️ 快捷键说明

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