2010-06-25 45 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