代码如下:int pInt[] = { 150, -1 };
// 分栏
::SendMessage(hWndStatus, SB_SETPARTS, 2, (LPARAM)pInt);
// 设置各栏的文本
::SendMessage(hWndStatus, SB_SETTEXT, 0, (LPARAM)" Windows");问题就是我要在状态栏显示" Windows"字符串,但是显示的是乱码?
我用的是UNICODE字符,应该(LPARAM)" Windows"这里转换出问题了!

解决方案 »

  1.   

    ::SendMessage(hWndStatus, SB_SETTEXT, 0, (LPARAM)L(" Windows")); 呢?
      

  2.   

    L 是根本,_T 只是形式。
    看如下定义:
    如果定义了_UNICODE标识符,那么一个称作__T的宏就定义如下:#define __T(x) L##x
    如果没有定义_UNICODE标识符,则__T宏只简单地定义如下:#define __T(x) x///////举个例子,即可明白:CString str = _T("12345");在非 UNICODE 工程下等于:CString str = "12345";在 UNICODE 工程下等于:CString str = L"12345";这个在编译时就决定了,其实就是个宏替换。
      

  3.   

    就是一个自动转换,加了L后,如果在UNICODE下,则自动转换。
      

  4.   

    #define __T(x) L##x 
    明白了
    谢谢各位了