问题如题目所示。我正在做项目的log部分,需要输出窗口的标题,但是总是有乱码。代码如下:    char szText[256];
    char szTitle[100];    HWND acWnd;
    acWnd = ::GetForegroundWindow();
    ::GetWindowText(acWnd,(LPTSTR)szTitle,sizeof(szTitle));
    
    log文件内容:
 フフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ文本    [键盘输入]   Backspace {文本}是窗口的标题,但是前面很多的乱码,千思不得其解!

解决方案 »

  1.   

    int GetWindowText(
      HWND hWnd,        // handle to window or control
      LPTSTR lpString,  // text buffer
      int nMaxCount     // maximum number of characters to copy
    );LPTSTR: 是宽字符或unicode字符
    你的szTitle是ascii字符
      

  2.   

    LPTSTR: 是宽字符或unicode字符
    你的szTitle是ascii字符
    __________________________________
    怎么转换?
      

  3.   

    直接声明一个LPTSTR的字符串不就可以了么?
      

  4.   

    试试这个呢:
        char szTitle[100];
        HWND acWnd = NULL;
        acWnd = ::GetForegroundWindow();
        if (NULL = acWnd)
        {
            ::SendMessage(acWnd, WM_GETTEXT, MAX_PATH, (LPARAM)szTitle);
        }
      

  5.   

    用TCHAR取代char声明字符数组。
      

  6.   

    TCHAR szText[256];
        TCHAR szTitle[100];    HWND acWnd;
        acWnd = ::GetForegroundWindow();
        ::GetWindowText(acWnd,(LPTSTR)szTitle,lstrlen(szTitle));
      

  7.   

    用了TCHAR就可以不用LPTSTR强制转换了。