2011-11-05 224 views
0

我想创建一个程序,它需要一个随机变量,然后将其吐出屏幕上(windows格式,而不是控制台)。但是,当我将该变量放入代码中时,发生这种情况:错误C2065:'Lcurrent':未声明的标识符

:错误C2065:Lcurrent“:未声明的标识符

当我改变的变量Lcurrent,它说 :错误C2065:LLcurrent”:未声明的标识符

我怎样才能使它所以它接受一个变量来创建一个窗口? 这是上下文:

while (counter < 44){ 
     current[1] = characters[counter]; 
     counter ++; 
     CreateWindow(TEXT("STATIC"), TEXT(current[1]), 
     WS_VISIBLE | WS_CHILD, 
     0, 0, 50, 50, 
     hwnd, (HMENU) NULL, NULL, NULL); 
    } 

头文件包括:

WINDOWS.H

time.h中

+0

是在你的代码中任何地方声明的'current'变量吗? – Andrey

回答

1

TEXT只能应用于字符串文字。 current[1]简单地必须是TCHAR*/const TCHAR*(或TCHAR[]/const TCHAR[])。

1

TEXT宏前置L来论证;它只能用于将ANSI字符串文字"..."转换为Unicode字符串文字L"..."

由于您的current串似乎是ANSI,使用CreateWindowA

CreateWindowA("STATIC", current[1], 
    WS_VISIBLE | WS_CHILD, 
    0, 0, 50, 50, 
    hwnd, (HMENU) NULL, NULL, NULL); 

(如果它是一个wchar_t的字符串,请使用CreateWindowW与L “静态”;如果是TCHAR字符串,在使用CreateWindow与当前的[1]和TEXT(“STATIC”)

+0

ANSI是一个微软专用名词不当的地方,它通常指的是Windows-1252 8位字符编码,美国国家标准学会(尽管它与ISO 8859-1相似,也被称为Latin-1)。真正的差异''...“'和'L”...“'之间的关系是它们分别指向'char'和'wchar_t'的数组。在Windows中,char是8位,wchar_t是16位,通常用于保存UTF-16或UCS-2编码的字符串(有许多表示Unicode文本的其他方式)。例如,在Linux上,'wchar_t'通常是32位。 –

+0

当然,你是对的。但是,当应用于WinAPI和UNICODE定义时,ANSI是我能找到的最能描述发生的最接近的术语。 – zeuxcg

+0

如果我尝试进行更改,则会吐出新的错误。 :错误C2664:'CreateWindowExA':无法将参数3从'char'转换为'LPCSTR' – TheLivingForce

相关问题