转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
TFontNameComboBox及TFontSizeComboBox的实现         ★★★★

TFontNameComboBox及TFontSizeComboBox的实现

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3887 更新时间:2009/4/23 18:38:22

在用C++ Builder进行程序设计时,很多时候需要在运行状态下更改控件的字体名称或大小,虽然VCL类库中提供了TFontDialog对话框组件,但有时候并不是很方便。而C++ Builder本身又没有提供类似Word工具栏中的字体名称及大小的选择下拉列表,为方便使用,作者特编写两个字体组件 TFontNameComboBox和TFontSizeComboBox,下简单介绍一下实现的方法及原理。

  要想取得系统所支持的字体及字体的大小,需要用到Windows SDK中的EnumFontFamiliesEx或EnumFontFamilies函数。这两个函数的函数原型如下:

 

int EnumFontFamiliesEx(

    HDC hdc, // handle to device context

    LPLOGFONT lpLogfont,// pointer to logical font information

    FONTENUMPROC lpEnumFontFamExProc, // pointer to callback function

    LPARAM lParam, // application-supplied data

    DWORD dwFlags // reserved; must be zero

    );

 

int EnumFontFamilies(

    HDC hdc, // handle to device control

    LPCTSTR lpszFamily, // pointer to family-name string

    FONTENUMPROC lpEnumFontFamProc,// pointer to callback function

    LPARAM lParam// address of application-supplied data 

   ); 

 

这两个函数的功能基本相同,但相对而言EnumFontFamiliesEx函数提供了更多的字体信息。在这两个函数中,都用到一个类型为FONTENUMPROC的回调函数,该函数的原型如下:

int CALLBACK EnumFontFamProc(

    ENUMLOGFONT FAR *lpelf, // pointer to logical-font data

    NEWTEXTMETRIC FAR *lpntm, // pointer to physical-font data

    int FontType, // type of font

    LPARAM lParam // address of application-defined data 

   );

这两个函数更详细的说明请参考MSDN。

下面是组件的简单实现代码:

/*===========================================================================
  TFontNameComboBox
TFontNameSizeComboBox组件头文件
  文件名称:FontComboBox.H
  
程序设计:梁生红
  创建日期:2003-03-20
===========================================================================*/
#ifndef FontComboBoxH
#define FontComboBoxH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
#include <StdCtrls.hpp>
#include <printers.hpp>
#include <Math.h>
//---------------------------------------------------------------------------
int static PixelsPerInch;

//
下列两个回调函数一定不能为类成员函数
bool __stdcall EnumFontNameProc(ENUMLOGFONT FAR *lpelf,NEWTEXTMETRICEX FAR *lpntme,
                                int FontType, LPARAM lParam);

bool __stdcall EnumFontSizeProc(ENUMLOGFONT FAR *lpelf,NEWTEXTMETRIC FAR *lpntm,
                                int FontType, LPARAM lParam);

//---------------------------------------------------------------------------
/* TODO : TFontNameComboBox
的声明 */
class PACKAGE TFontNameComboBox : public TCustomComboBox
{
private:
protected:
        void

[1] [2] [3] [4] [5] [6]  下一页


[VB.NET程序]VB的ShowInTaskbar功能分析以及用VC的实现  [Delphi程序]TManagedDataSet和DataSetPool的实现
[Delphi程序]MSN / QQ 中的动画表情 在Delphi中RichEdit的实现…  [VB.NET程序]MD5加密算法(16位,32位)的C#,VB的实现
[Web开发]利用JS获取IE客户端IP及MAC的实现  [Web开发]ASP.Net ViewState的实现
[Web开发]vb.net_asp.net跨栏表头_滚动表体的DataGrid的实现  [Web开发]无限分类算法 js 的实现
[JAVA开发]关于UDDI的实现  [SyBase]InnoDB 中文参考手册 --- 10 multiversioning 的实…
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台