这是一个我从未想过的老问题 - 想知道这里是否有人碰巧知道你脑海中的答案......
在我们软件的某些部分 (MFC/Win32/MBCS) 我的代码只会收到
TTN_NEEDTEXTW
在我们软件的其他部分,我会收到 MBCS 正确消息
TTN_NEEDTEXTA
对我来说完全是无稽之谈。
我知道我们的软件可以编译为 Unicode 或不编译(我们设置为使用多字节字符集)。我有一个模糊的回忆,每个窗口都可以构造成 Unicode 或不构造,虽然这是一个模糊的记忆,没有什么具体的。
有谁知道为什么我们会在代码中的某些地方得到宽版本消息,尽管被编译为多字节?
笔记:
- 我们绝对不会发送此消息 - 大概是 ToolTip 控件。
- 我们肯定只在某些地方接收到 (W) 消息,而在其他地方肯定只接收到 (A) 消息。
- 我确定所有编译模块都使用 MBCS,而不是 Unicode,并且构建目标都指定 MBCS 而不是 Unicode。
- 这似乎只发生在 CMainFrame 托管的窗口和控件上。即主框架之外的窗口可以使用窄版本(比如在对话框中)。