用的书上的例子,但是总提示错误
Error 4 error C2440: '=' : cannot convert from 'char [256]' to 'LPWSTR'
把(LPWSTR)加在前面进行强制转换则可以编译通过。
但是显示出现乱码
不知道怎么解决
是不是少加了什么头文件?
多谢

解决方案 »

  1.   

    如果程序是把一个LPWSTR型变量赋给char[256],反之亦然。
    char[256]是一个char型的值,而LPWSTR是指针,这样赋值肯定不行啦。建议楼主把程序贴出来。
      

  2.   

    char数组就是char*类型啊,为什么和string不能转换呢?
      

  3.   

    the source code is like this:
    static char szAppName[] = "text editor";
    static HWND hDlgModeless;
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    {
    MSG         msg;
    HWND        hwnd;
    HACCEL      hAccel;
    WNDCLASSEX  wndclass;
    wndclass.cbSize= sizeof (wndclass);
    wndclass.style= CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra= 0;
    wndclass.cbWndExtra= 0;
    wndclass.hInstance= hInstance;
    wndclass.hIcon= LoadIcon (hInstance, (LPCWSTR)szAppName);
    wndclass.hCursor= LoadCursor (NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
    wndclass.lpszMenuName= (LPCWSTR)"POPPAD";// 如果不这样强制转换,则会提示错误
    wndclass.lpszClassName= (LPCWSTR)szAppName;//同上.
    wndclass.hIconSm= LoadIcon (hInstance, (LPCWSTR)szAppName);
    RegisterClassEx (&wndclass);
    ......
      

  4.   

    any one who knows please gives me a hand
    Thanks!
      

  5.   

    WNDCLASSEX  的定义
    typedef struct {
        UINT cbSize;
        UINT style;
        WNDPROC lpfnWndProc;
        int cbClsExtra;
        int cbWndExtra;
        HINSTANCE hInstance;
        HICON hIcon;
        HCURSOR hCursor;
        HBRUSH hbrBackground;
        LPCTSTR lpszMenuName;
        LPCTSTR lpszClassName;
        HICON hIconSm;
    } WNDCLASSEX, *PWNDCLASSEX;觉得你用LPCTSTR 强制转换吧,LPCWSTR是宽字符
      

  6.   

    to tong20037(小菜) ,我用的studio 2005,定义如下:
    typedef struct tagWNDCLASSEXW {
        UINT        cbSize;
        /* Win 3.x */
        UINT        style;
        WNDPROC     lpfnWndProc;
        int         cbClsExtra;
        int         cbWndExtra;
        HINSTANCE   hInstance;
        HICON       hIcon;
        HCURSOR     hCursor;
        HBRUSH      hbrBackground;
        LPCWSTR     lpszMenuName;
        LPCWSTR     lpszClassName;
        /* Win 4.0 */
        HICON       hIconSm;
    } WNDCLASSEXW, *PWNDCLASSEXW, NEAR *NPWNDCLASSEXW, FAR *LPWNDCLASSEXW;
    是LPCWSTR类型的。
      

  7.   

    但是你的程序中使用的是:
    WNDCLASSEX  wndclass;
    自己看一下如果是WNDCLASSEXW
    你定义static TCHAR szAppName[] = "text editor";
      

  8.   

    GetModuleFileNameEx( hProcess, hMod, szModuleFileNameTmp, 
                                   sizeof(szModuleFileNameTmp)/sizeof(TCHAR) );szModuleFileName.Format(_T("%s"),szModuleFileNameTmp); // szModuleFileName的值出现的问号,所以想问问怎么回事。有人知道为什么会出现问号吗?
      

  9.   

    to tong20037(小菜),强制转换成LPCTSTR编译出错。 
    用F12跟踪了一下定义,发现宏定义中有WNDCLASSEX 即WNDCLASSEXW。
    看来问题不是出在这儿。
    现在用studio 2005 team edition中文版的,编译完全通过,什么都不需要修改。
    刚用vc,却发现问题如此不可思议。
      

  10.   

    wndclass.lpszMenuName= _T("POPPAD");
      

  11.   

    vs2005默认的是unicode,许多老程序员都卡在这儿了,这其实是一个非常简单的问题