Win32 程序(SDK 程序)共同使用的数据类型:
数据类型 意义
BOOL Boolean 值(布尔值,不是TRUE 就是FALSE)
BSTR 32-bit 字符指针
BYTE 8-bit 整数,未带正负号
COLORREF 32-bit 数值,代表一个颜色值
DWORD 32-bit 整数,未带正负号
LONG 32-bit 整数,带正负号
LPARAM 32-bit 数值,做为窗口函数或callback 函数的一个参数
LPCSTR 32-bit 指针,指向一个常数字符串
LPSTR 32-bit 指针,指向一个字符串
LPCTSTR 32-bit 指针,指向一个常数字符串。此字符串可移植到Unicode 和DBCS(双字节字集)
LPTSTR 32-bit 指针,指向一个字符串。此字符串可移植到Unicode 和DBCS(双位组字集)
LPVOID 32-bit 指针,指向一个未指定类型的资料
LPRESULT 32-bit 数值,做为窗口函数或callback 函数的回返值
UINT 在Win16 中是一个16-bit 未带正负号整数,在Win32 中是一个32-bit 未带正负号整数。
WNDPROC 32-bit 指针,指向一个窗口函数
WORD 16-bit 整数,未带正负号
WPARAM 窗口函数的callback 函数的一个参数。在Win16 中是16 bits ,在Win32 中是32 bits 。
MFC 独特的数据类型:
数据类型 意义
POSITION 一个数值,代表collection 对象(例如数组或串行)中的元素位置。常使用于MFC collection classes 。
LPCRECT 32-bit 指针,指向一个不变的RECT 结构。
MFC 数据类型与C++ 语言数据类型之间的对应,定义于WINDEF.H
#define NULL 0
#define far //
#define near //
#define pascal __stdcall //
#define cdecl _cdecl
#define CDECL _cdecl
#define CALLBACK __stdcall //
#define WINAPI __stdcall //
#define WINAPIV __cdecl //
#define APIENTRY WINAPI //
#define APIPRIVATE __stdcall
#define PASCAL __stdcall
#define FAR far
#define NEAR near
#define CONST const
typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef float FLOAT;
typedef FLOAT *PFLOAT;
typedef BOOL near *PBOOL;
typedef BOOL far *LPBOOL;
typedef BYTE near *PBYTE;
typedef BYTE far *LPBYTE;
typedef int near *PINT;
typedef int far *LPINT;
typedef WORD near *PWORD;
typedef WORD far *LPWORD;
typedef long far *LPLONG;
typedef DWORD near *PDWORD;
typedef DWORD far *LPDWORD;
typedef void far *LPVOID;
typedef CONST void far *LPCVOID;
typedef int INT;
typedef unsigned int UINT;
typedef unsigned int *PUINT;
/* Types use for passing & returning polymorphic values */
typedef UINT WPARAM;
typedef LONG LPARAM;
typedef LONG LRESULT;
typedef DWORD COLORREF;
typedef DWORD *LPCOLORREF;
typedef struct tagRECT
{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
typedef const RECT FAR* LPCRECT;
typedef struct tagPOINT
{
LONG x;
LONG y;
} POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;
typedef struct tagSIZE
{
LONG cx;
LONG cy;
} SIZE, *PSIZE, *LPSIZE;
MFC下的常用字符串数据类型表示的含义:
L:Long 长 P:Point 指针 C:Const 常量 W:Wchar_t 宽字符 T:TCHAR STR:String 字符串
1) int ->CString
int n = 1;
CString str;
str.Format("%d",n);
2) long --> CString
long l ;
CString str;
str.format("%ld",l);
3) float->CString
float f = 0.0;
CString str;
str.Format("%f",f);
4) double --->CString
double d;
CString str;
str.format("%f",d);
5) char*->CString
char sz[128];
CString str;
str.Format("%s",sz);
6) CTime-->CString
CTime time;
time = CTime::GetCurrentTime();
CString strTime;
strTime.Format("%s",time .Format("%Y-%m-%d"));
MessageBox(strTime);
/
1) CString->int
CString str = "1";
int n = atoi(str.GetBuffer(0));
2) CString->float
CString str = "0.1";
float f = atof(str.GetBuffer(0));
3) CString -> char*
CString str;
int nLength = str.GetLength();
char* sz = new char[nLength];
sz = str.GetBuffer(0);
CString sur;
sur="2006-08-09";
COleDateTime time1;
time1.ParseDateTime(sur);
SYSTEMTIME systime;
VariantTimeToSystemTime(time1, &systime);
CTime tm(systime);
m_time=tm;
UpdateData(false);
Format函数第一个参数是要转的那个数的类型
我现在的程序是
int a = 21;
double b = 3.45;
CString str;
str.Format("%03d%02.4f" , a , b);
现在得到的结果是"0213.4500"
%02.4f对b的整数部分不起作用
我想要得到一个形如aaabb.bbbb的字符串("02103.4500"),如果a不足3位,用0补齐,如果b的整数和小数不足2位和4位也要用0补齐
CString::Format("%d",xx);其中xx不能为双精度,不然会转化错误,应该使用CString::Format("%d",(LONG)xx);
例:
DOUBLE d = 22.443;
CString str;
str.Format("%d", d);转化后的str = "1924145349",这是错误的!