c++ - 我使用 CreateWindowExA 创建窗口。为什么我的窗口标题文本显示为多字节编码?

标签 c++ windows winapi

我有这个程序:

#include <Windows.h>

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
        case WM_CLOSE:
            PostQuitMessage(0);
            break;

        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
    }

    return 0;
}

int main()
{
    WNDCLASSA wnd_class = { 0 }; 
    wnd_class.lpfnWndProc = WndProc;
    wnd_class.hInstance = GetModuleHandle(NULL);
    wnd_class.lpszClassName = "actwnd";

    RegisterClassA(&wnd_class);

    HWND main_wnd = CreateWindowA(wnd_class.lpszClassName, "Program activation", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0, 640, 480, NULL, 0, wnd_class.hInstance, NULL);

    MSG msg = { 0 };
    while(GetMessage(&msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}

我不明白为什么窗口标题显示不正确:

enter image description here

它看起来对我来说是未知的原因,有些人仍然认为这是 unicode 两字节编码......

文件高级保存选项编码设置为单字节一-win 1251。

我想完全使用 ANSI 版本,而我的窗口标题只包含 ANSI 字符。

最佳答案

您的窗口过程需要调用 DefWindowProcA

关于c++ - 我使用 CreateWindowExA 创建窗口。为什么我的窗口标题文本显示为多字节编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17987870/

相关文章:

c - 为什么在 64 计算机上调试 32 位应用程序时得到 STATUS_WX86_BREAKPOINT 而不是 EXCEPTION_BREAKPOINT?

c++ - 获取目录中最早的文件

c++ - 初始化一个 GUID 变量 : How?

c++ - 如何判断是否设置了mongoDB directoryperdb?

c++ - 跨两个不同进程的QSharedMemory

c++ - 在 TreeView 中双击后焦点丢失

windows - 我可以用Delphi代码控制“扬声器”图标的状态吗

c++ - 设置 C/C++ 构建配置在点击确定后恢复为默认值

windows - 添加名称中带有空格的Active Directory组会在PowerShell脚本中给出错误

c++ - C++ 游戏的动态数据处理