mfc 数据类型转换一

转载 2015年07月08日 10:13:38

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);


4)  CString--〉CTime
     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",这是错误的!


相关文章推荐

MFC中常用数据类型转换

刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。 我们先定义一些常见类型变量借以说明           int i = 100;   &#...

CString与char*数据类型转换 在MFC中(以后还会更新,仅做笔记)

这类简单的东西,有时候不用就容易忘,每次用的时候都要搜一下,我自己记录下确认的一种方法吧 1 CString转化成char* CString cstrPP=L"I am a boy!"; char m...

MFC中常用数据类型转换

刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。 我们先定义一些常见类型变量借以说明           int i = 100;   ...

MFC中数据类型转换的一些心得

众所周知,对于C++中ASCII码以及unicode两种针对字符的编码方式有所不同,所以在我们编程的过程中,尤其是涉及强制类型转换的过程中,经常会发现最后的输出结果显示为乱码,下面介绍一个笔者在编写M...

C/C++与MFC数据类型转换

string,CString,int,char*之间的相互转换 《C++标准函数库》中说的 有三个函数可以将字符串的内容转换为字符数组和C—string 1.data(),返回没有”\0“的...

PHP数据类型转换

  • 2012-12-18 16:17
  • 906B
  • 下载

jni数据类型转换

  • 2017-02-05 15:21
  • 6.36MB
  • 下载

C语言中强制数据类型转换的总结

● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把ch...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)