2010-06-25 44 views
0

从帮助我创建按钮和内容的网站获取此代码。按钮的工作,但由于某种原因,我得到一个编译器错误与创建一个静态。将LPCWSTR投射到LPCSTR

cannot convert from 'const wchar_t [5]' to 'char'

cannot convert parameter 3 from 'char' to 'LPCWSTR'

是有一个简单的方法来解决这一问题?我试着将歌词放入另一个变量中,并将它变成一个字符。

static char *lyrics = TEXT("Dood"); 



switch (message) 
{ 

case WM_CREATE: 
{ 
     CreateWindow(TEXT("button"), TEXT("Beep"),  
       WS_VISIBLE | WS_CHILD , 
       20, 300, 80, 25,   
       hWnd, (HMENU) 1, NULL, NULL);  

    CreateWindow(TEXT("button"), TEXT("Quit"),  
       WS_VISIBLE | WS_CHILD , 
       120, 300, 80, 25,   
       hWnd, (HMENU) 2, NULL, NULL);  

    CreateWindow(TEXT("STATIC"), lyrics, 
       WS_CHILD | WS_VISIBLE | SS_LEFT, 
       20, 20, 300, 230, 
       hWnd, (HMENU) 1, NULL, NULL); 

回答

2

试试这个:

static TCHAR *lyrics = TEXT("Dood"); 

有了你似乎有编译器设置,TCHAR将被转换为wchar_t的。

+0

awsome!非常感谢你。这个win32的东西对我来说非常混乱。 – TimothyTech 2010-06-25 15:31:11

+0

请注意,您并未真正投射任何东西。你现在只是使用正确的类型。 – 2010-06-25 16:23:04

+1

同样值得注意的是,变量类型T将根据'Unicode Vs多字节字符集(MBCS)'的项目设置来解析,就像包装在宏中的win32函数一样 - 即CreateWindow宏是CreateWindowA或CreateWindowW,而TCHAR是char或wchar_t。 – 2010-06-25 18:16:21