【问题标题】:How to get Unicode window title correctly如何正确获取 Unicode 窗口标题
【发布时间】:2017-07-25 03:04:24
【问题描述】:

我创建了一个执行简单任务的 Win32 控制台应用程序:它枚举所有窗口的标题。一切都很好,除了一点——“非英语”标题返回为“GDI+ Window”。

我不知道如何以正确的方式检索此类字幕。

例如,我有一个带有标题的窗口:Hello Мир。但是,GetWindowTextW 返回“Hello GDI+ 窗口”

有我的程序代码(简体):


    BOOL CALLBACK nextWindow ( HWND window, LPARAM param )
    {
        int i = GetWindowTextW ( ... );
        wprintf ( ... );
        return true;
    }

    int main ()
    {
        WNDENUMPROC func = &nextWindow;
        LPARAM someValue = 0;

        BOOL result = EnumWindows ( func, someValue );
        return 0;
    }

有我的项目设置: Visual Studio Project Settings

谢谢!

【问题讨论】:

  • 我认为你的例子有点太简单了。编译的东西怎么样?对于奖励积分,您可以让它创建一个显示问题的窗口。
  • 我必须填写空白,但这是一个消息框的屏幕截图,该消息框基本上由您的程序生成,您提供的字符串用作记事本中的文件名。我会说问题存在于您没有显示的代码或您没有描述的具体情况..imgur.com/a/h01pn
  • stackoverflow.com/questions/29527078/… 的可能重复项,因为他正在使用 wprintf 并且可能没有将控制台的语言环境设置为 UTF8 或类似的可以处理宽字符的东西 - 将其写入文件可能会起作用。

标签: c++ windows visual-c++


【解决方案1】:

谢谢你们,你们最有帮助!

就我而言,我只需要使用以下代码更改翻译模式:

_setmode(_fileno(标准输出),_O_U8TEXT);

Michael S. Kaplan的文章中查看更多详细信息。

问题解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 2016-01-29
    • 2010-12-05
    • 2012-04-16
    • 2015-10-31
    相关资源
    最近更新 更多