c++ - 从 char 转换为 LPCWSTR

标签 c++ api

我用 C++ 学习 Win API(我是新手)。我对字符/字符串数据类型有疑问。

我也在谷歌阅读了其他文档,但仍然不明白。

今天我遇到了这个问题:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
    RECT rect;
    char MyChar = 0;

    switch (message)
    {
    case WM_CHAR:
        MyChar = LOWORD(wParam);
        MessageBox(hWnd, (LPCWSTR)MyChar, (LPCWSTR)MyChar, MB_OK);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

目的:输入1个字符,messageBox显示。

我的问题是 MyChar 是一个字符(8 位),我想转换为 LPCWSTR。但是,...没有成功。

任何人都可以帮助我。提前致谢!

最佳答案

LPCWSTR 应为宽字符数组 (wchar_t) 的地址,MessageBox() 期望该数组以空字符结尾。

然后你可以使用一个有两个元素的数组,在第二个元素中使用空字符,然后像这样修改第一个元素

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
    RECT rect;
    wchar_t myString[2];
    myString[1] = '\0'; // Ensure the second element is the null char

    switch (message)
    {
    case WM_CHAR:
        myString[0] = LOWORD(wParam); // Modify the first element only
        MessageBox(hWnd, myString, myString, MB_OK);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

关于c++ - 从 char 转换为 LPCWSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19743078/

相关文章:

c++ - 使用 boost::asio::generic::raw_protocol::socket 时 OS (Linux) 不添加第 2 层 header

c++ - 两条线之间的内角

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

c++ - 用C++处理来自MySQL的utf-8数据并返回结果

c++ - 如何将 wchar 值存储在双引号字符串中

php - 收到亚马逊商城 API 请求的内部错误

javascript - Angularjs:修改CRUD操作的顺序

facebook - 由于offline_access已被弃用,我们将如何通过服务器在页面上发布内容?

javascript - 如何将重复的字符串转换为函数?

api - Fluent API 与其他 API 有何不同?