c++ - WinApi - ToUnicode 函数引发访问冲突?

标签 c++ winapi

<分区>

LPWSTR data[256];
ToUnicode(vk_code, 0, 0, *data, 256, 0);

此代码抛出以下异常:

访问冲突写入位置 0xCCCCCCCC。

vk_code 值在断点处似乎完全正常,我检查了 msdn 以确保我的参数有效。我可能做错了什么?

最佳答案

您正在将未启动的指针传递给 pwszBuff 参数。它需要一个指向分配的字符数组的指针。更改您的数组以使用 WCHAR 元素而不是 LPWSTR 元素,并摆脱 * 取消引用运算符:

WCHAR data[256];
int res = ToUnicode(vk_code, 0, 0, data, 256, 0);
switch (res) {
    case -1:
        // dead-key character, nothing written to data[]... 
        break;
    case 0:
        // no translation, nothing written to data[]... 
        break;
    default:
        // res # of characters written to data[]... 
        break;
}

关于c++ - WinApi - ToUnicode 函数引发访问冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46312824/

相关文章:

c++ - 定义中的const值参数而不是声明中的const值参数真的是C++吗?

c++ - 当我尝试通过 Qt 在 FTP 上获取文件时出错

c++ - Bigint +运算符

c++ - While() 循环在文本周围创建星号边框?

c++ - 使用一个单独的 DLL 库在运行时导入其他库

c - 同步ReadFile读取的字节数

c++ - 在 C++(ATL、MFC 或纯 C++)中为 Java 互操作处理 COM 事件

c++ - "LRESULT CALLBACK WinProc"和 "LRESULT WINAPI WinProc"之间的区别

c# - 是否可以将 .NET WinForm 的父级设置为 native 应用程序?

c++ - 除非首先创建,否则首先创建的对话框将变得无响应?