文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程Asp.NetIFontDisp和CFontHolder的使用问题
精品推荐
特别推荐
·技巧实例:ASP.NET生成静态页面实现方法
·ASP.NET、JSP及PHP之间的抉择
·.net基础知识错误注意二十二点知识
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·.NET基础知识-什么是.NET
·初学C#+ASP.NET+Oracle时积累的备忘点滴
·专家详解:复杂表达式的执行步骤
·asp.net中的加密方法
·DataGrid常见关注问题解决方案
·学习笔记 ASP.NET 5种页面转向法
·ASP.NET网络编程中经常会用到的27个函数集
·ASP.NET之上传文件管理策略
·专家:用.NET动态创建类的实例讲解
·ASP.NET WEB服务和Flash打造MP3播放器
·精通ASP.NET中弹出窗口技术
·asp.net常用代码
·asp.net创建文件夹的IO类的问题
·Asp.Net函数集
·Asp.net cache 简述
·如何最大限度提高.NET的性能 (续)
热点TOP10
·DataTable控件的使用
·ASP.NET上传文件的实例
·ASP.NET2.0下含有DropDownList的GridView编辑、删除的完整例子!
·asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
·ASP.NET购物车的实现及结算处理
·在ASP.NET中防止注入攻击[翻译]
·使用ASP.NET2.0的ReportViewer查看RDLC报表
·asp.net程序中最常用的三十三种编程代码
·ASP.NET 2.0的导航控件treeview和menu的实例
·asp.net常用代码
·Lucene.net 实现全文搜索
·在C#后代码里使用IE WEB Control TreeView
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·Access 通用数据访问类(asp.net 2.0 c#)
·.Net分页控件发布
·ASP.NET之上传文件管理策略
·AspNetPager分页控件--使用方法
·asp.net 2.0中gridview里嵌套dropdownlist
·ASP.net在线购物商城系统完全解析
·手把手教你在Win2003下配置ASP.NET开发环境

IFontDisp和CFontHolder的使用问题

日期:2007年7月8日 作者: 查看:[大字体 中字体 小字体]


最近处理一个控件Bug,发现COM组件字体读取有趣问题。
Bug描述:
      简体中文下的应用编写:
         ocx.Font.Name = "宋体"       '对控件的字体初始化
         text1.text = ocx.CellFont(1,1, KDS_FontProp_Name)   '读取单元格1,1的字体
     控件说明:当相应单元格未设置字体时,将使用控件的字体设置。
     问题:
        在繁体中文下运行,text1得到字体名为乱码。

分析:
先简化问题:
尝试:在简体操作系统下
       ocx.Font.Name = “abcd”
       Msgbox KDS12.CellFont(1,1, KDS_FontProp_Name)
       得到输出:abcd。
       呵呵,这显然不对。
       MsgBox KDS12.Font.Name
       输出:Arial  
       嗯,这才是对的,哪有什么abcd字体啊。
       好了,问题找到了,"宋体"两个字到繁体中文下,当然会变成乱码啦。
 
因此,初步确定是CellFont接口的问题。

查看代码:
      取字体的方法如下:
      CFontHolder &rFontHolder = pControl->InternalGetFont();
      HFONT hFont = rFontHolder.GetFontHandle();
      LOGFONT lf;
      CFont *pFont = CFont::FromHandle(hFont);
      pFont->GetLogFont(&lf);
      OK,明白了,是通过LOGFONT取字体信息。
      再试一下,不管你输入什么字体名,它取出来就是啥。嘿。

尝试换种方式取字体信息:
     (代码不完全,未处理出错情况,只是举例)
     IFont * pIFont = NULL;
     rFontHolder.GetFontDispatch()->QueryInterface(&pIFont)))
     然后,用IFont的接口取信息,如:get_Name(&bstrTemp)
     试试,这下取出是正确应用的字体,当设置错误时,会取出默认值。
     错误排除。

似乎的结论:
     采用 IFontDisp接口方式设置的字体信息,
     当采用pControl->InternalGetFont()取回CFontHolder后,如果通过GetFontHandle 取出Windows句柄,然后获取字体信息,并不一定是真实的应用值(即例子中,一旦出错,并不取出系统默认值,而是错误的设置值,其中保存的似乎是一个临时值,而非实际的最终应用值)
     如果采用GetFontDispatch 取出IFontDisp,然后再取出IFont来取值,才是正确地。
     Why? 天晓得。


[1] [2] 下一页 




上一篇: Unicode控件的字串参数问题

下一篇:利用Visual C#编程模拟鼠标操作

IFontDisp和CFontHolder的使用问题 相关文章:
·GHOST使用方法(图解)
·《边看边打赚大奖--迅雷宽频》部分问题及答案
·Vista系统使用技巧总结
·为什么iexplore.exe在打开网页时CPU使用会100%?
·全面解决Generic host process for win32 services遇到问题需要关闭
·DataTable控件的使用
·QQ空间导航代码最新版使用方法
·推荐:漂亮的手机上使用的墙纸图片分享下载
·腾讯QQ号码使用完全指南
·SQL server 2005安装问题汇总
IFontDisp和CFontHolder的使用问题 相关软件:
·网络常见问题与故障1000例
·黑客视频教程 VMware虚拟机的安装和使用
·黑客视频教程-灰鸽子远控使用教程
·FLASH 8中文使用手册
·使用GPMC随心所欲管理组策略
·Adobe Photoshop CS 2 简体中文使用指南
·有关毛泽东的一些问题解答(不完整版)
·中东问题的历史根源
·Auto CAD R14高级使用教程
·每天问自己十个问题

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn