C++ 使用↺ 在Win32 GUI中的按钮上

C++ 使用↺ 在Win32 GUI中的按钮上,c++,winapi,unicode,win32gui,C++,Winapi,Unicode,Win32gui,我正在制作一个Win32 GUI应用程序,我想显示↺ 按钮上的字符 通常,我认为应该插入一个unicode字符,如下所示: HWND button = CreateWindow("BUTTON", "\u27F3", WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON, size - 105, size - 29, 100, 24, hwnd, (HMENU)IDI_BUTTON, GetModuleHandl

我正在制作一个Win32 GUI应用程序,我想显示↺ 按钮上的字符

通常,我认为应该插入一个unicode字符,如下所示:

HWND button = CreateWindow("BUTTON", "\u27F3",
        WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON, size - 105,
        size - 29, 100, 24, hwnd, (HMENU)IDI_BUTTON,
        GetModuleHandle(NULL), NULL);
其中\u27F3是此处在C/C++/Java下描述的unicode字符

但是,当我这样做时,我没有得到箭头字符,而是得到一个不同的字符?怎么了


谢谢

我要厚颜无耻地从雷蒙德·陈的评论中窃取,并展示更正后的代码:

HWND button = CreateWindowW(L"BUTTON", L"\u27F3",
        WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON, size - 105,
        size - 29, 100, 24, hwnd, (HMENU)IDI_BUTTON,
        GetModuleHandle(NULL), NULL);

当然,您在窗口中选择的字体需要支持该字符。

您也可以这样做,而且这与@Mark Ransom answer没有太大区别:-

HWND button = CreateWindowW(TEXT("BUTTON"), TEXT("\u27F3"),
    WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON, size - 105,
    size - 29, 100, 24, hwnd, (HMENU)IDI_BUTTON,
    GetModuleHandle(NULL), NULL);
并在程序中定义UNICODE,如下所示:-

 #define UNICODE 

说明:-文本是一个宏,如果以其他方式定义unicode,它将扩展为unicode等效项,并计算为普通ASCII字符串

您需要选择支持要显示的Unicode字符的字体或使用位图图像。如果不介意,获取这样的图像并使用图像按钮可能会节省大量时间。嗯,您正在将Unicode字符放入Ansi字符串中。这永远不会有好的结局。我假设这样做而不是像Back这样使用文本的动机是有限的空间。如果是这样的话,那就很好了,但是强烈地考虑在你的按钮上添加一个工具提示,它显示了鼠标在其上的功能的文本说明。像“返回”这样简单的东西也没问题,只是不要假设用户确切知道什么↺ 意味着。事实上,最新版本的Windows能够为缺少的字形选择另一种字体,因此它可能仍然有效。文本宏仅在您希望能够从一种字符类型切换到另一种字符类型时才有用。如果您使用以A或W结尾的API函数,那么您已经被锁定为参数的字符类型,因此我更愿意对此进行明确说明。我看到的不仅仅是文字,尽管它们的意思是一样的。