c++ - WORD* 类型的参数与 LPCWSTR 类型的参数不兼容

标签 c++ lpcwstr

问题是&cursorTile.Attributes.
我收到的错误是(“WORD*”类型的参数与“LPCWSTR”类型的参数不兼容)
我试图找到一些解决方案,我正在使用多字节字符集。

void CMap::Draw(){
SMALL_RECT drawRect = { 0, 0, MAP_WIDTH - 1, MAP_HEIGHT - 1 };
COORD buffersize = { MAP_WIDTH, MAP_HEIGHT };
COORD zeroZero = { 0, 0 };
DWORD dwResult = 0;
char szCursor[2] = "";

HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);

for (int i = 0; i < (int)m_vTiles.size(); i++){
    m_screenBuffer[i] = m_vTiles[i].GetChar();
}

WriteConsoleOutput(hOutput, m_screenBuffer, buffersize, zeroZero, &drawRect);

if (g_pCursorTile != NULL){
    CHAR_INFO cursorTile = g_pCursorTile->GetChar();
    sprintf(szCursor, "%c", cursorTile.Char);
    WriteConsoleOutputCharacter(hOutput, szCursor, 1, g_cursorPos, &dwResult);
    WriteConsoleOutputCharacter(hOutput, &cursorTile.Attributes, 1, g_cursorPos, &dwResult);
}

最佳答案

这是一个非常错误的错误。 WriteConsoleOutputCharacter 需要一些字符串作为第二个参数。如果您的程序被定义为 unicode,它需要 LPCWSTR,这基本上是一个(丑陋的)类型定义到一个空终止的 wchar_t* 字符串。

在你的调用中,你传递了&cursorTile.Attributes,它的类型是DWORD*(这又是一个丑陋的类型定义到unsigned long*)。您需要传递一些宽字符字符串而不是无符号长指针,即您要打印的字符串。

关于c++ - WORD* 类型的参数与 LPCWSTR 类型的参数不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31784721/

相关文章:

无法将参数 2 从 'const char [14]' 转换为 'LPCWSTR'

c++ - 为什么下面的代码在C++中是非法的

c++ - stpncpy() 这里有问题吗?

winapi - 将 wstringstream 转换为 LPCWSTR

c++ - 在 C++ 中将字符串转换为 LPCWSTR

C++ lpcwstr 到 wstring

c++ - LPCWSTR ERROR C++类型的参数与类型的参数不兼容

c++ - 最令人费解的C++堆分配错误

C++ 引用可以赋值吗?

c# - 用 C++ 编写控件以便 C++ 和 C# 程序可以使用它的最佳方法是什么?