|
|
1
5
这通常是对话框模板的一个错误。这并不是一个消息框错误。 例如,在Visual Studio中创建默认的win32应用程序。在.rc文件中,将about框模板中的标题更改为
到
当您显示about框时,错误就会显现出来。
在
DLGTEMPLATEEX documentation
请注意,菜单和类名具有类型
Windows错误地将类似的方案应用于对话框标题:如果第一个字符是
换句话说,Windows正在查找标题字符串中的字体信息。在大多数情况下,这不会指定有效的字体,因此Windows默认为系统字体。 为了证明这一点,我在内存中构建了一个对话框模板( based on this ). 工作完成后,我删除了将字体信息写入模板的代码,并使用了对话框标题“a\xd\x200\x21SimSun”。这将以斜体SimSun显示对话框,因为windows正在从标题字符串中读取字体信息。 这个错误很可能是16位Windows的遗留问题,(我猜)0xFF被用作资源ID标记。 |
|
|
2
3
一只奇怪的虫子。我怀疑这些症状是
在内部,
因此,对话框模板的内存布局的字体规范紧跟在对话框标题之后。
Visual Basic不使用Unicode,因此您调用的函数实际上是
我相信,由于某种原因,该字符串从多字节到Unicode的转换要么出错,要么返回了一个虚假的长度值。当对话框模板构建在内存中时,这会产生连锁反应,破坏标题字符串后面的内存——正如我们所知,这就是字体规范。 |
|
|
PHPLover · “支持PHP扩展或功能的端口”实际上是什么意思? 1 年前 |