1 CreateWindow函数中的参数CW_USEDEAULT,CW的全称是什么?表示什么意思?USEDEAULT应该是使用默认的意思,那么前面那个CW呢?
    2 字符串的本质是什么?比如“我是程序员”,它表示的是存储这段字符串的首地址即指针吗?            
    MessageBox( NULL, "Register Failed","Error", MB_OK );
    
    MessageBox中第二个参数和第三个参数的类型都为指针,却直接用字符串来赋值。是不是“Register  Falied"和"Error"都表示一个指针。
    我把“”字符串理解为存储这段字符的内存的首地址,即指针。这样合理吗?高手指教。

解决方案 »

  1.   

    1,CW = CreateWindow 啊2,内部处理你这样理解是没错的
      

  2.   

    我不是高手,就我能力尝试回答下你的问题1.不要深究,只是一个明明,CW是CreateWindow的缩写,MFC里面常量命名有这个习惯;
    2.我猜测你的疑问是既然是指针,这个字符串是如何销毁的
      "Register Failed",这个双引号引起来的是“字符串字面值常量”,这类常量不可修改
    MessageBox的第二个参数类似于LPCTSTR,我特意查了下这个意义
      L是处理和兼容以前版本,解决历史遗留问题,没有什么实际意义
      P代表指针
      C代表常量
      T代表宏就是_T(
      STR是字符串
    也就是说,LPCTSTR代表一个指向字符串字面值的常量
    你上面使用的"Register Failed"这类字符串字面值常量数据是在栈中分配,自动释放
    如果你改为
    TCHAR* pStr = new TCHAR[100];
    _tcscpy(pStr, _T("test"));MessageBox(NULL, pStr, pStr, MB_OK);
    如果这样使用,数据在堆中分配,那就需要自己释放数据。