为什么 TTN_NEEDTEXTW 而不是 TTN_NEEDTEXTA?

Mor*_*hai 3 winapi mfc tchar

这是一个我从未想过的老问题 - 想知道这里是否有人可能碰巧知道你头脑中的答案......

在我们软件的某些部分 (MFC/Win32/MBCS) 中,我的代码只会收到

TTN_NEEDTEXTW

在我们软件的其他部分,我会收到 MBCS 正确消息

TTN_NEEDTEXTA

对我来说完全是无稽之谈。

我了解我们的软件是否可以编译为 Unicode(我们设置为使用多字节字符集)。并且我有一种模糊的记忆,每个窗口都可以构建 Unicode 或不构建,虽然这是一个模糊的记忆,没有具体的内容。

有谁知道为什么我们会在我们的代码中的某些地方收到宽版本消息,尽管被编译为多字节?

笔记:

  • 我们绝对不会发送此消息 - 大概是 ToolTip 控件。
  • 我们肯定只在某些地方收到 (W) 消息,而在其他地方肯定只收到 (A) 消息。
  • 我确信所有编译模块都使用 MBCS,而不是 Unicode,并且构建目标都指定 MBCS 而不是 Unicode。
  • 这似乎只发生在 CMainFrame 托管的窗口和控件上。即主框架之外的 Windows 可以使用窄版本(例如在对话框中)。

Ray*_*hen 5

公共控件会向您发送一条WM_NOTIFYFORMAT消息,询问您“您希望接收 MBCS 通知还是 Unicode 通知?” 默认是根据窗口是通过CreateWindowExW还是 来创建响应的CreateWindowExA