锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 英语翻译 / C++开源技术 / CFontListBox
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品开源心得,转载请注明:“锐英源www.wisestudy.cn,孙老师作品,电话13803810136。”需要全文内容也请联系孙老师。英文原文

fontlistBox
内容

  • 简介
  • 背景
  • 代码使用
    • 列表风格标记
    • 提示(tooltip)风格标记
    • 最近使用文件(MRU)列表类型标记
    • 以自动子类化控件形式来在对话框内使用CFontListBox。
    • 以手工子类化控件形式在对话框内使用CFontListBox
    • 动态创建CfontListBox控件
  • CFontListBox 类
    • 成员函数
    • 数据成员
  • CFontDescriptor类
    • 成员函数
    • 数据成员
  • 全局函数
    • 最近文件列表持久化函数
  • 安装引导
    • 库工程安装
    • 示例工程安装
  • 告知

简介

我需要个ListBox能显示和选择字体。打算自己写,实现如下要求:

  • 字体类型检查时的性能考虑
  • 以标准文本显示字体名称或用字体自己来显示字体名称
  • 能显示提示条tooltip(跟踪鼠标指针或选择的项),以示例文本或字面名称
  • 支持MRU子列表,在有CfontListBox的应用程序多个实例间可共享,也可不共享。
  • 在工程里不依赖位图或ImageList资源文件
  • 可以对话框子类化控件来使用,也可由手工创建

背景

为了管理MRU子列表,共享与否,CFontListBox使用了由CfontListManager实例提供的服务。在程序初始化时只有一个CFontListManager实例自动创建。这个类负责加载字体列表,管理MRU列表(对CFontListBox来说是私有,在2个或更多控件间共享,或对应用程序来说是全局的),管理是通过CFontDescriptor和CfontMruList对象和它的各类集合来实现的。
这个控件从COMDLG32.DLL里获取要显示的位图资源,所以不需要特别的资源加到此工程里。
为了允许对字体列表的加载处理,这个控件和别的控件不一样,使用方法也不一样。我尝试区分字体类型(TrueType,OpenType等等)。它使用了由::EnumFontFamiliesEx函数提供的标志给回调函数(参见FontListManager.cpp 内的EnumFontProc和CFontListManager::FillFontList())
需要对于基类ListBox进行重新创建来允许修改,进而支持CFontListBox风格标志。
MRU列表持久化需要2个函数,这2个函数要在CWinApp::InitInstance 和 CWinApp::ExitInstance里调用。当CFontListManager实例创建的实际需要来决定的,这时CWinApp::SetCurrentHandles()还没调用(这个MFC函数负责初始化CwinApp的数据成员,比如m_pszRegistryKey 和 m_pszProfileName)。持久化只对全局MRU列表和定制命名过的某些起作用,命名过的是经过标记的列表。
CFontListManager有允许对系统范围内广播消息 WM_FONTCHANGE重响应的特点。这个特点需要顶层窗口来接收消息,这个顶层窗口一旦CFontListBox创建了,也会创建(这只会在CwinApp对象和其它框架或对话框窗口初始化后发生)

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内