• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 一个奇怪的ATL输入文本问题

一个奇怪的ATL输入文本问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了atl,atl71.dll,atl100.dll下载,atl71.dll修复,穿越火线atl71.dll等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 一个奇怪的ATL输入文本问题
描述:

我用ATL编程,添加一个复合控件.可是输入文本框(EDIT,COMBOX)输入中文(不管是五笔还是拼音等中文输入)却成了乱码,可我用剪贴板,将我要输入的文本先粘贴进去,又是正确的.我同时也在其它电脑上试过,还是出现同样的问题.请问各位,这是什么原因??????????????


解决方案1:

你可以用WideCharToMultiByte()将一个Unicode串转换成一个ANSI串。此函数的原型如下: 
int WideCharToMultiByte (
    UINT    CodePage,
    DWORD   dwFlags,
    LPCWSTR lpWideCharStr,
    int     cchWideChar,
    LPSTR   lpMultiByteStr,
    int     cbMultiByte,
    LPCSTR  lpDefaultChar,
    LPBOOL  lpUsedDefaultChar );

解决方案2:

你可以用WideCharToMultiByte()将一个Unicode串转换成一个ANSI串。此函数的原型如下: 
int WideCharToMultiByte (
    UINT    CodePage,
    DWORD   dwFlags,
    LPCWSTR lpWideCharStr,
    int     cchWideChar,
    LPSTR   lpMultiByteStr,
    int     cbMultiByte,
    LPCSTR  lpDefaultChar,
    LPBOOL  lpUsedDefaultChar );
 
以下是参数解释:
CodePage 
Unicode字符转换成的代码页。你可以传递CP_ACP来使用当前的ANSI代码页。代码页是256个字符集。字符0——127与ANSI编码一样。字符128——255与ANSI字符不同,它可以包含图形字符或者读音符号。每一种语言或地区都有其自己的代码页,所以使用正确的代码页对于正确地显示重音字符很重要。
dwFlags 
dwFlags 确定Windows如何处理“复合” Unicode字符,它是一种后面带读音符号的字符。如è就是一个复合字符。如果这些字符在CodePage参数指定的代码页中,不会出什么事。否则,Windows必须对之进行转换。
传递WC_COMPOSITECHECK使得这个API检查非映射复合字符。
传递WC_SEPCHARS使得Windows将字符分为两段,即字符加读音,如e`。
传递WC_DISCARDNS使得Windows丢弃读音符号。
传递WC_DEFAULTCHAR使得Windows用lpDefaultChar参数中说明的缺省字符替代复合字符。
缺省行为是WC_SEPCHARS。
lpWideCharStr 
要转换的Unicode串。
cchWideChar 
lpWideCharStr在Unicode 字符中的长度。通常传递-1,表示这个串是以0x00结尾。
lpMultiByteStr 
接受转换的串的字符缓冲
cbMultiByte 
lpMultiByteStr的字节大小。
lpDefaultChar 
可选——当dwFlags包含WC_COMPOSITECHECK | WC_DEFAULTCHAR并且某个Unicode字符不能被映射到同等的ANSI串时所传递的一个单字符ANSI串,包含被插入的“缺省”字符。可以传递NULL,让API使用系统缺省字符(一种写法是一个问号)。
lpUsedDefaultChar 
可选——指向BOOL类型的一个指针,设置它来表示是否缺省字符曾被插入ANSI串。可以传递NULL来忽略这个参数。 
// 假设已经有了一个Unicode 串 wszSomeString...
char szANSIString [MAX_PATH];
    WideCharToMultiByte ( CP_ACP,                // ANSI 代码页
                          WC_COMPOSITECHECK, // 检查重音字符
                          wszSomeString,         // 原Unicode 串
                          -1,                    // -1 意思是串以0x00结尾
                          szANSIString,          // 目的char字符串
                          sizeof(szANSIString),  // 缓冲大小
                          NULL,                  // 肥缺省字符串
                          NULL );                // 忽略这个参数
调用这个函数后,szANSIString将包含Unicode串的ANSI版本。

解决方案3:

晕死了,我不过一段时间没来,就不会发帖了,我有问题要问,却找不到可以发表主题帖的按扭,只可以回复。
BLOG里明确限定只能发文章,不能提问题。教教我呀,如何发表主题帖。

解决方案4:

CString strAddress=L("http://www.163.com");

解决方案5:

把
CString strAddress="http://www.163.com";
换成
CString strAddress=L"http://www.163.com";
试试

解决方案6:

楼主你就不要用CString了,直接用BSTR或者就用_bstr_t就好了。
_bstr_t strAddress= _T("http://www.163.com");


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 为什么用向导生成的ATLCOM工程(dll)没有dlldatac文件
  • 关于用ATL开发office插件
  • 疑惑:如何使用通过atl工程编写的类接口
  • ATL怎么实现可变参数的接口?
  • codeproject上的经典代码,ATL做OPENGL控件,为什么不能在VB环境下正常工作,如何改进
  • VC的ATL编COM组件,Com之间调用问题
  • 要用atl写个控件,涉及到界面的,怎么将wtl和atl结合起来用呐?用wtl来做控件的界面
  • ATL实现office插件问题?
  • 谁能帮我看一下关于ATL编写COM组件
  • 在ATL中不能用#import导入excel9olb文件么??

相关文章

  • 2017-06-05 用户界面线程中如何使用定时器?
  • 2017-06-04 点击IE工具栏上一自定义的按钮出现一个对话框
  • 2017-06-04 请问COM调用提示没有注册接口,怎么回事怎样实现?
  • 2017-06-04 VC用Excel打开大XML文件很慢
  • 2017-06-04 为什么会在Release版编译的时候出这种错?
  • 2017-06-05 MFC应用程序支持automation的时候,向导在stdafxh里面生成的一系列数字到底是什么含义?
  • 2017-06-04 MFC的双缓冲绘图
  • 2017-06-05 vc编程WORD
  • 2017-06-05 ATL的CString传递给MFC的CString问题
  • 2017-06-05 请问wdm作驱动的学习教程哪里有??

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • activex控件在部分电脑可安装运行,有些电脑报网页上有错误。
    • 用VC6如何编写一个asp可以调用的DLL
    • 线程与com问题
    • ActiveXdll多线程问题?
    • 用MFC开发了一个ActiveX控件,我该如何为它增加一个新的接口?
    • 高分求教!希望高手能够指点!
    • 如何调用Windows的Search搜索窗口,或使用此功能搜索?
    • ocx控件怎么响应鼠标移动等消息呢
    • 请教大家。。我用Atuvue做为VC60Activex控件加上后不能打开文件。
    • 客户端为什么没有调用CoFreeUnusedLibraries?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有