首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制使用ANSI编辑控件而不是comctl32编辑控件

强制使用ANSI编辑控件而不是comctl32编辑控件
EN

Stack Overflow用户
提问于 2013-02-11 19:57:14
回答 1查看 303关注 0票数 0

我构建了一个模块,它用windows的edit windowclass中的编辑框创建一个窗口。它只适用于ansi字符集,不使用任何unicode。

我使用EM_GETHANDLE接收编辑控件的缓冲区。

现在我的问题来了:(引用自上面的链接)

Note For Comctl32.dll version 6, the buffer always contains an array of WCHARs, regardless of whether an ANSI or Unicode function created the edit control. For more information on DLL versions, see Common Control Versions.

因此,当我的模块被初始化了comctl32的应用程序加载时,我的整个代码就会崩溃。

我的问题是:有没有办法阻止CreateWindowA使用comclt32,或者有谁有办法解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2013-02-11 20:27:52

如果在应用程序的清单中指定了COMCTL32.DLL,则应用程序将使用该应用程序,例如此处:http://msdn.microsoft.com/en-us/library/windows/desktop/bb773175%28v=vs.85%29.aspx

如果您模块是DLL,那么您可以尝试使用某种隔离技术,以便它不依赖于.exe决定使用的COMCTL32.DLL版本,但这可能会带来许多其他缺点。

我建议使用WM_GETTEXTAGetWindowTextA(),这会将转换后的字符串复制到缓冲区中。设计一个需要旧版本的DLL才能正常工作的模块根本就不是个好主意。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14811325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档