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",這是錯誤的!