windows程序设计学习笔记-文本和字体

BOOL TextOut(

In HDC hdc,

In int nXStart,

In int nYStart,

In LPCTSTR lpString,

In int cchString

);

在指定位置写字符串。使用当前选择的字体,背景颜色,字体颜色。

nXStart:系统用来对齐字符串的参考点X坐标。逻辑坐标。

nYStart

对参考点的解释取决于当前的文本对齐模式。可以用GetTextAlign取得此模式。

可以用SetTextAlign改变此模式。

TA_BASELINE:参考点在基线。

TA_BOTTOM:参考点在边界矩形底部。

TA_TOP:参考点在边界矩形顶部。

TA_CENTER:参考点在边界矩形中间。

TA_LEFT:参考点在边界矩形左边

TA_RIGHT:参考点再边界矩形右边

TA_NOUPDATECP:参考点在文本输出后不更新。

TA_UPDATECP:参考点在每次文本输出后更新。处于此模式时,TextOut的nXStart,nYStart被忽略。

LONG TabbedTextOut(

In HDC hDC,

In int X,

In int Y,

In LPCTSTR lpString,

In int nCount,

In int nTabPositions,

In const LPINT lpnTabStopPositions,

In int nTabOrigin

);

写一个字符串在指定位置。扩展 tabs到tab-stop 位置数组中指定值。文本用当前选择的字体,背景颜色和文本颜色写。

hDC:设备环境句柄

X :字符串起始点X坐标。逻辑单位。

Y:字符串起始点Y坐标。逻辑单位。

lpString:指向要写的字符串。

lpString:字符串写的长度。

nTabPositions:在tab-stop位置数组里的值数量。

lpnTabStopPositions:指向一数组包含tab-stop位置,以逻辑单位。tab-stops需要以递增顺序排列。最小的X值应该是数组里第一个条目。

nTabOrigin :开始位置X坐标。tabs从此处被扩展。逻辑单位。

返回值:

成功,维度。高度是高序字。宽是低序字。

失败,0.

virtual BOOL ExtTextOut(

int x,

int y,

UINT nOptions,

LPCRECT lpRect,

LPCTSTR lpszString,

UINT nCount,

LPINT lpDxWidths

);

在一个矩形区域内使用选择的字体写一个字符串。

x:指定第一个字符的逻辑X坐标。

y:指定第一个字符顶部逻辑Y坐标。

nOptions:

ETO_CLIPPED:指定文本被剪切到矩形。

ETO_OPAQUE:用当前背景颜色来填充矩形。

lpRect :指向一个矩形结构来定义矩形的维度。

lpszString:字符串。

nCount :字符串里要处理的字符数量。

lpDxWidths:指向一个数组。每个元素表示相邻字符单元起始处的距离。为NULL时,使用默认的字符间距。

int DrawText(

In HDC hDC,

Inout LPCTSTR lpchText,

In int nCount,

Inout LPRECT lpRect,

In UINT uFormat

);

绘制格式化文本在指定的矩形里。依据指定的方法格式方法。用DrawTextEx可以指定额外的格式选项。

hDC:设备环境句柄

lpchText:指向一个要被显示的字符串的指针。nCount为-1时,字符串需要有终止符。

uFormat包含DT_MODIFYSTRING时,这个函数可以增加4个额外的字符到字符串。字符缓冲应该足够大来容纳额外的字符。

nCount:字符串以字符为单位的长度。如果nCount为-1,lpchText应该以终止符结尾。DrawText自动计算字符数量。

lpRect:指向一个字符串被格式化位置的矩形。逻辑坐标。

uFormat:格式化字符串的方法。

DT_BOTTOM:把字符串调整到矩形底部。仅在DT_SINGLELINE 设置时有效。

DT_CALCRECT:决定矩形的宽和高。

如果有多行文本,DrawText使用lpRect指向的矩形宽 且 扩展矩形基部 到文本最后一行的边界。

如果最大的单词比矩形更广,矩形宽度相应扩大。

如果文本小于矩形宽度,宽相应减小。

如果文本仅有一行,DrawText修改矩形的右边以便它包含一行里的最后一个字符。

在其他情况下,DrawText返回格式化文本的高度,但不去绘制文本。

DT_CENTER:居中文本在矩形中水平的。

DT_EDITCONTROL:复制一个多行控件的文本显示特性。

特别的,平均字符宽以相同方式被计算 且 这个函数不显示一个部分可见的最后一行。

DT_END_ELLIPSIS:对于显示的文本,如果一个字符串的结束部分不适合矩形,它被截断且添加省略标识。

如果一个单词不在字符串的尾部 且超出了矩形的限制,它被截断但不添加省略标识。

这字符串未被修改除非指定了DT_MODIFYSTRING 标识。

DT_EXPANDTABS:扩展tab字符。每个tab默认对应8个字符。

DT_WORD_ELLIPSIS, DT_PATH_ELLIPSIS, and DT_END_ELLIPSIS不能和DT_EXPANDTABS公用。

DT_EXTERNALLEADING:包含字体外部空间在行高里。外部空间通常不包含在一行文本的高度里。

DT_HIDEPREFIX:

DT_INTERNAL:用系统字体计算文本度量。

DT_LEFT:文本左对齐。

DT_MODIFYSTRING:修改指定的字符串来匹配显示文本。

DT_END_ELLIPSIS 或 DT_PATH_ELLIPSIS指定时有效。

DT_NOCLIP:无剪切绘制。

DT_NOFULLWIDTHCHARBREAK:阻止一个行中断在一个双子符宽的字符串里。以便行中断规则等价于单字符字符串。

DT_WORDBREAK 未指定时有效。

DT_PATH_ELLIPSIS:对显示的文本,替换字符串中部的字符用省略号。以便适合指定的矩形。

如果字符串包含 反斜杠字符,DT_PATH_ELLIPSIS 保存尽可能多 反斜杠后的字符。

DT_RIGHT:右对齐

DT_SINGLELINE:显示文本在一行。

DT_TABSTOP:设置tab位数。

uFormat 的低位字的高位字节 指定每个tab的字符数量。

DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNAL, DT_NOCLIP, and DT_NOPREFIX 不可和DT_TABSTOP公用。

DT_TOP:文本顶部对齐。

DT_VCENTER:垂直居中。DT_SINGLELINE 设置时有效。

DT_WORDBREAK:中断单词。行自动中断在单词间,如果单词会扩展超过lpRect参数指定的矩形边界。未指定时,输出在一行。

DT_WORD_ELLIPSIS:截断单词不适合矩形的,添加省略号。

成功,返回文本高度。逻辑单位。

DT_VCENTER or DT_BOTTOM 指定时,返回值是 lpRect->top到绘制文本底部的偏移。

失败,0

设备环境的文本对齐模式要包含 TA_LEFT, TA_TOP, and TA_NOUPDATECP

文本颜色:

SetTextColor:文字颜色

SetBkMode:背景模式。QPAQUE:用当前设定的背景色填充矩形框。TRANSPARENT。

SetBkColor

SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT));

SetBkColor(hdc, GetSysColor(COLOR_WINDOW));

字符间距:默认值是0.

SetTextCharacterExtra(hdc, iExtra); // iExtra是逻辑单位。

GetTextCharacterExtra。

字体

文字的字样和字号定义了一种特定的字体。

// 使用库存字体

HFONT hFont = GetStockObject(iFont); // iFont可在Window预定义的一些标识符中取值。

SelectObject(hdc, hFont);

在设备环境中指定新字体时,须调用GetTextMetrixs来计算字体中字符高度和字符平均宽度。

Windows支持 GDI字体和设备字体。

GDI字体存储在硬盘文件中。设备字体是输出设备自身就支持的。

GDI字体分三类:点阵字体,笔画字体和Truetype字体。

点阵字体的每个字符都以像素形式表示,并存储在一个位图里,又称位图字体。

每种点阵字体都针对字符的特定尺寸和纵横比设计。

点阵字体字样名:

System

FixedSys

Terminal

Courier

MS Serif

MS Sans Serif

Small Fonts

每个点阵字体只有几个有限的尺寸。

笔画字体。笔画字体由一系列点和连接点的线段组成。

笔画字体可以平滑地缩放。

笔画字体字样名:

Modern

Roman

Script

对GDI点阵字体和GDI笔画字体,对不同的字形,可直接合成。

TrueType字体的每个字符都通过字符的轮廓线来定义。

windows可改变字符轮廓线的坐标对TrueType字体进行缩放。

TrueType字体的字样名称:

Courier New

Courier New Bold

Courier New Italic

Courier New Bold Italic

Times New Roman

Times New Roman Bold

Times New Roman Italic

Times New Roman Bold Italic

Arial

Arial Bold

Arial Italic

Arial Bold Italic

Symbol

设置斜体或粗体时,既可使用属性,也可使用同一系列的不同字样来达到同样的目的。

逻辑字体

一个逻辑字体是一个GDI对象。

BOOL CreateFontIndirect(

const LOGFONT* lpLogFont

);

初始化一个CFont对象用LOGFONT结构里面给定的特性。

typedef struct tagLOGFONT {

LONG lfHeight;

LONG lfWidth;

LONG lfEscapement;

LONG lfOrientation;

LONG lfWeight;

BYTE lfItalic;

BYTE lfUnderline;

BYTE lfStrikeOut;

BYTE lfCharSet;

BYTE lfOutPrecision;

BYTE lfClipPrecision;

BYTE lfQuality;

BYTE lfPitchAndFamily;

TCHAR lfFaceName[LF_FACESIZE];

} LOGFONT;

lfHeight:指定字体字符单元的高度。逻辑单位。

字符高度值是字符单元高度值减去内部值。

0 字体映射把此值转换到设备单位且匹配他按可获得字体的单元高度。

0 字体映射使用一默认高度值。

<0 字体映射把此值转换到设备单位,匹配他得到绝对值按可获得字体的高度。

对MM_TEXT映射模式,可用如下规则制定给定点值字体的高度。

lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

define MulDiv(a,b,c) (((a)*(b))/(c))

lfWidth:指定字体中字符的平均宽度。逻辑单位。

如果lfWidth不是0,设备纵横比匹配按可获取字体的数字纵横比来寻找最近的匹配。

对应TEXTMETRIC的tmAveCharWidth字段。

使用方式:

先把LOGFONT的lfWidth设为0,创建逻辑字体并选入设备环境

然后用GetTextMetrics获得tmAveCharWidth字段,按比例调节该值的大小,

用被调节过的tmAveCharWidth值作为lfWidth字段值来创建一个新的字体。

lfEscapement :文本预先定义的位移数。

指定角度,以10度。在行距向量和X轴间。

行距向量平行于文本行的基线。

如果lfEscapement指定了escapement and orientation,应该让lfOrientation 也设置为相同 值。

lfOrientation:文本预先定义的方向。

指定角度,以10度。在每个字符基线和X轴间。

要让两个字段起到以上描述的效果,须满足:

用TrueType字体,

在Windows NT上运行,

在先前调用SetGraphicsMode时设定的CM_ADVANCED标志。

单位是十分之一度。从逆时针方向度量。

lpEscapement指定在输出字符串的相邻字符间的位移大小。

lfOrientation单个字符的倾斜方向。

lfWeight :指定字体权重,在范围[0, 1000]。0时用默认权重。

lfItalic:指定一个倾斜字体。

lfUnderline :指定一个下划线字体。

lfStrikeOut :指定一个删除线字体。

lfCharSet:指定字符集。

ANSI_CHARSET

BALTIC_CHARSET

CHINESEBIG5_CHARSET

DEFAULT_CHARSET

EASTEUROPE_CHARSET

GB2312_CHARSET

GREEK_CHARSET

HANGUL_CHARSET

MAC_CHARSET

OEM_CHARSET

RUSSIAN_CHARSET

SHIFTJIS_CHARSET

SYMBOL_CHARSET

TURKISH_CHARSET

lfOutPrecision: 指定输出精度。

输出精度定义输出必须与要求的字体的高度,宽度,字符orientation, escapement,pitch, and 字体类型如何精确地匹配。

OUT_DEFAULT_PRECIS:指定默认字体映射行为。

OUT_RASTER_PRECIS:指导字体映射来选择一个光栅字体当系统包含多个同名字体时。

OUT_STRING_PRECIS:不被字体映射使用。但被返回,当光栅字体被枚举时。

lfClipPrecision:指定剪切精度。

切剪精度定义了如何去剪切部分超出剪切区域的字符。

CLIP_DEFAULT_PRECIS:指定默认剪切行为。

CLIP_CHARACTER_PRECIS:不使用。

CLIP_STROKE_PRECIS:不被字体映射使用。但当光栅,容器,或TrueType字体被枚举时返回。

lfQuality :指定输出质量。

输出质量定义了GDI如何小心来匹配逻辑字体属性到这些实际的物理字体。

ANTIALIASED_QUALITY:

NONANTIALIASED_QUALITY:强制使用 draft quality 。当HKEY_LOCAL_MACHINE\ System\ GDI\ Fontsmoothing 注册表子键被使用。

CLEARTYPE_COMPAT_QUALITY:对兼容宽度字体用ClearType 文本。

CLEARTYPE_QUALITY:对字体用 ClearType 文本。

显示驱动须支持 ClearType 文本。

DEFAULT_QUALITY:字体外观不重要。

DRAFT_QUALITY:对GDI光栅字体,启用缩放。

lfPitchAndFamily:指定字体间距和组。

两个低序位指定字体间距,可是以下值:

DEFAULT_PITCH

FIXED_PITCH

MONO_FONT

VARIABLE_PITCH

4-7位指定字体组,可是以下值:

FF_DECORATIVE

FF_DONTCARE

FF_MODERN

FF_ROMAN

FF_SCRIPT

FF_SWISS

字体家族描述了一个字体共性的外观。

他们意图与指定字体当额外的 typeface 不可获得。可取以下值:

FF_DECORATIVE:

FF_DONTCARE:

FF_MODERN:字体有变化的笔画宽。

如Pica, Elite, and Courier New.

FF_ROMAN:字体有变化的笔画宽 和 衬线。

如Serif.

FF_SCRIPT:手写字体。

如Script and Cursive.

FF_SWISS:字体有变化的笔画宽 没有 衬线。

如Sans Serif.

lfFaceName :一个字符串指定字体的typeface名。

长度(含终止符)不超过32字体,为空时,GDI用第一个匹配其他指定的属性的字体

一下情形不支持 ClearType antialiasing。

文本被呈递在打印机上。

显示设置为256或更少的颜色。

文本被呈递在一个终端服务客户端。

字体不是TrueType字体或具有TrueType外部线的Microsoft OpenType font 。

字体有嵌入位图

// lfHeight表示点值X下像素数

if (fLogRes)

{

// LOGPIXELSX:沿屏幕宽度每逻辑英寸的像素数 LOGPIXELSY:沿屏幕高度每逻辑英寸的像素数

cxDpi = (FLOAT) GetDeviceCaps (hdc, LOGPIXELSX) ;

cyDpi = (FLOAT) GetDeviceCaps (hdc, LOGPIXELSY) ;

}

else

{

// HORZRES:屏幕的宽度(像素) VERTRES:屏幕的高度(光栅线)

// HORZSIZE:物理屏幕的宽度(毫米) VERTSIZE:物理屏幕的高度(毫米)

// 求出的是每物理英寸单位的像素数

cxDpi = (FLOAT) (25.4 * GetDeviceCaps (hdc, HORZRES) / GetDeviceCaps (hdc, HORZSIZE)) ;

cyDpi = (FLOAT) (25.4 * GetDeviceCaps (hdc, VERTRES) / GetDeviceCaps (hdc, VERTSIZE)) ;

}

 // 1磅约为1/72英寸
 // 每磅像素数。点值。
 pt.x = (int) (iDeciPtWidth  * cxDpi / 72) ;
 pt.y = (int) (iDeciPtHeight * cyDpi / 72) ;

 DPtoLP (hdc, &pt, 1) ;

 // tmHeight - tmInternalLeading,字体中字符高度占据的空间是多少磅。也就是字体的点值
 lf.lfHeight         = - (int) (fabs (pt.y) / 10.0 + 0.5) ;

字体匹配算法:

lfCharSet很重要

lpPitchAndFamily字段含FIEXED_PITC时,该值重要。

lpFaceName也重要。

对点阵字体,Windows尝试去匹配lfHeight值。对笔记和点阵字体,Windows通过简单缩放来得到期望的字体高度。

lfQuality为PROOF_QUALITY时,可防止Windows对点阵字体缩放。

lfHeight和lfWeight值得比值和显示器纵横比不符合,windows寻找相应点阵字体。

typedef struct tagTEXTMETRICW

{

LONG tmHeight; // 逻辑单位表示的字符高。lfHeight > 0,两者近视相等,都指行间距。 lfHeight < 0,tmHeight - tmInternalLeading为lfHeight的绝对值,也是点值。

LONG tmAscent; // 逻辑单位。字符在基准线之上的垂直长度。

LONG tmDescent; // 逻辑单位。字符在基准线之下的垂直长度。

LONG tmInternalLeading; // 内部间隔值。对应大写字母变音符号的区域。tmHeight已包含此区域。

LONG tmExternalLeading; // 外部间隔值

LONG tmAveCharWidth; // 小写字母的平均宽度

LONG tmMaxCharWidth; // 字体中最宽字符的宽度。逻辑单位。

LONG tmWeight; // 字符粗细程度。0-999

LONG tmOverhang; // Windows对点阵字体进行斜体或粗体合成时,该字符会变得略宽。此字段代表那额外的宽度

LONG tmDigitizedAspectX; // 适合该字体的纵横比例

LONG tmDigitizedAspectY; // 适合该字体的纵横比例

WCHAR tmFirstChar; // 字体中第一个字符的编码

WCHAR tmLastChar; // 字体中最后一个字符的编码

WCHAR tmDefaultChar; // 当希望显示的字符在该字体中不存在时,Windows使用此段定义的字符来代替显示。

WCHAR tmBreakChar; //Windows认为在该字符处是可以断行的

BYTE tmItalic; // 是否是斜体字。非0,表示一个斜体字体

BYTE tmUnderlined; // 是否带有下划线,非0,表示带有下划线

BYTE tmStruckOut; // 是否带有删除线,非0,表示带有删除线

BYTE tmPitchAndFamily; // 该字段低四位表示字体的一些特性。高四位表示字体的系列。

BYTE tmCharSet;//字符集

} TEXTMETRICW, *PTEXTMETRICW, NEAR *NPTEXTMETRICW, FAR *LPTEXTMETRICW;

字体枚举

int EnumFonts(

In HDC hdc,

In LPCTSTR lpFaceName,

In FONTENUMPROC lpFontFunc,

In LPARAM lParam

);

lpFaceName为NULL,枚举所有字体。非NULL,返回特定字体。

lpFontFunc:枚举回调函数。

lParam:可选。可用来给枚举回调函数传递参数。

int EnumFontFamilies(

In HDC hdc,

In LPCTSTR lpszFamily,

In FONTENUMPROC lpEnumFontFamProc,

In LPARAM lParam

);

第一次调用时,lpszFamily设为NULL。

对每个字体系列,调用一次lpEnumFontFamProc。

然后,应用程序会用字体系列的每个字样名字再次调用EnumFontFamilies,但每次使用一个不同的回调函数。

对该系列每个字体,GDI会调用第二次传入的回调函数。

typedef struct

{

DWORD lStructSize;

HWND hwndOwner;

HDC hDC;

LPLOGFONT lpLogFont;

INT iPointSize;

DWORD Flags;

COLORREF rgbColors;

LPARAM lCustData;

LPCFHOOKPROC lpfnHook;

LPCTSTR lpTemplateName;

HINSTANCE hInstance;

LPTSTR lpszStyle;

WORD nFontType;

INT nSizeMin;

INT nSizeMax;

} CHOOSEFONT, *LPCHOOSEFONT;

包含ChooseFont函数用来初始化 字体选择对话框的信息。

对话框关闭时,系统在此结构里返回用户选择信息。

lStructSize :结构长度。字节单位。

hwndOwner :句柄,指向拥有对话框的窗口。

hDC:无效

lpLogFont :指向一个LOGFONT结构。

如在Flags字段设置了 CF_INITTOLOGFONTSTRUCT 和初始化了其他成员,

ChooseFont函数初始化对话框用与LOGFONT成员匹配的字体。如果用户点击了OK按钮,ChooseFont

设置LOGFONT结构成员基于用户的选择。

iPointSize :字体大小,1/10点值单位。

Flags :位集合,你可用来初始化字体对话框。当对话框返回,它设置这些位来指示用户输入。可为以下值:

CF_APPLY :让对话框显示 Apply按钮。

你应该提供一个 钩子处理器来处理Apply按钮的WM_COMMAND消息。

钩子处理器可以发送 WM_CHOOSEFONT_GETLOGFONT消息给对话框来取得包含当前用户选择字体的结构地址。

CF_ANSIONLY :不用。

CF_BOTH :不考虑。

CF_EFFECTS :让对话框显示控件,控件指的是 删除线,下划线,文本颜色选项。

如果设置了此标志,你可以用rgbColors成员来指定初始文本颜色。你可以用此结构lpLogFont的lfStrikeOut和lfUnderline

成员来指定删除线和下划线复选框初始设置。

选择字体函数用上面提到的几个成员返回用户选择。

CF_ENABLEHOOK :启用在此结构lpfnHook中指定的 钩子处理器

CF_ENABLETEMPLATE :

指明 hInstance 和 lpTemplateName 指定一个使用的模板。

CF_ENABLETEMPLATEHANDLE :

指明 hInstance指定一个数据块,包含预加载的对话框模板。

如果此标志指定,系统忽略lpTemplateName。

CF_FIXEDPITCHONLY :ChooseFont仅仅枚举 等宽字体。

CF_FORCEFONTEXIST :ChooseFont应指明一个错误条件,如果用户试图没列举在对话框里的选择一个字体或风格。

CF_INITTOLOGFONTSTRUCT :

ChooseFont应用lpLogFont指向结构来初始化对话框控件。

CF_LIMITSIZE :ChooseFont选择的字体尺寸应在 nSizeMin到nSizeMax间。

CF_NOOEMFONTS :和 CF_NOVECTORFONTS 相同。

CF_NOFACESEL :

当用LOGFONT结构来初始化对话框控件,用此标志来阻止对话框对一个字体名Combo box显示一个初始选择。

CF_NOSCRIPTSEL :暂不考虑

CF_NOSIMULATIONS :不显示,不允许字体仿真。

CF_NOSIZESEL :

当用一个结构初始化此对话框控件,用此标志来阻止对话框显示对字体尺寸复选框初始的选择。

CF_NOSTYLESEL :

当一个LOGFONT结构初始化对话框控件,用此标志来阻止对话框显示对字体风格复选框初始的选择。

CF_NOVECTORFONTS :

ChooseFont不允许vector字体选择。

CF_NOVERTFONTS :让字体对话框仅列出水平方向字体。

CF_PRINTERFONTS :暂不考虑。

CF_SCALABLEONLY :暂不考虑。

CF_SCREENFONTS :暂不考虑。

CF_SCRIPTSONLY :暂不考虑。

CF_TTONLY :暂不考虑。

CF_SELECTSCRIPT :

当输入指定 仅具有LOGFONT的lfCharSet中定义的字符集的字体被显示。

用户不允许改变Scripts复选框中的字体集。

CF_SHOWHELP :

让对话框显示帮助按钮,hwndOwner须指定窗口来接受HELPMSGSTRING注册消息。

此消息在按下对话框里Help按钮时发送。

CF_USESTYLE :

这lpszStyle成员是一个指向一个包含风格数据的缓冲。ChooseFont用来初始化字体风格复选框。

用户关闭对话框,此缓冲保存用户选择。

CF_WYSIWYG :无效。

rgbColors :

CF_EFFECTS标志设置时,rgbColors指定初始文本颜色。

ChooseFont返回成功时,此成员包含用户选择的文本颜色的RGB值。

lCustData :

应用定义的数据,系统传递给 钩子处理器,由lpfnHook成员定义。

当系统发送WM_INITDIALOG消息给钩子处理器,消息的lParam参数是指向CHOOSEFONT结构的指针。

钩子处理器可用指针得到lCustData值。

lpfnHook:

一个指针指向CFHookProc钩子处理器,可处理用于对话框的消息。

只在 CF_ENABLEHOOK标志设置时有效。

lpTemplateName:

对话框模板资源名。模板默认为标准对话框模板。

只在 CF_ENABLETEMPLATE标志设置时有效。

hInstance:

如CF_ENABLETEMPLATEHANDLE 标志被设置,hInstance是一个指向内存对象的句柄。内存对象包含了一个对话框模板。

如CF_ENABLETEMPLATE 标志被设置,hInstance是一个句柄,指向一个模块,包含了lpTemplateName指定的对话框模板。

lpszStyle :

CF_USESTYLE 设置时有效。

nFontType:

ChooseFont返回时,用来表示选择的字体类型。

BOLD_FONTTYPE

ITALIC_FONTTYPE

PRINTER_FONTTYPE

REGULAR_FONTTYPE

SCREEN_FONTTYPE

SIMULATED_FONTTYPE

nSizeMin

nSizeMax

ChooseFont设置的LOGFONT结构的lfHeight字段总以像素为单位。且仅适合视频显示。

时间: 2024-10-24 00:07:50

windows程序设计学习笔记-文本和字体的相关文章

windows程序设计学习笔记(一)

windows里的变量类型 1.简单重定义windows变量 BOOL (TRUE FALSE) INT UINT(32位,4字节) LONG DWORD(32位,4字节) lParam,wParam(32位,4字节) SHORT WORD(16位,2字节) LPSTR   LPCSTR(字符串指针,可写和只读)      char *和const char* 2.句柄类型 HINSTANCE of Windows ->HWND; HINSTANCE of Instance  ->HINSTA

Linux 程序设计学习笔记----ANSI C 文件I/O管理

转载请注明出处:http://blog.csdn.net/suool/article/details/38129201 问题引入 文件的种类 根据数据存储的方式不同,可以将文件分为文本文件和二进制文件.具体的区别和关系如下: 文本文件与二进制文件在计算机文件系统中的物理存储都是二进制的,也就是在物理存储方面没有区别都是01码,这个没有异议,他们的区别主要在逻辑存储上,也就是编码上. 文本文件格式存储时是将值作为字符然后存入其字符编码的二进制,文本文件用'字符'作为单位来表示和存储数据,比如对于1

Linux 程序设计学习笔记----命令行参数处理

转载请注明出处.http://blog.csdn.net/suool/article/details/38089001 问题引入----命令行参数及解析 在使用linux时,与windows最大的不同应该就是经常使用命令行来解决大多数问题.比如下面这样的: 而显然我们知道C语言程序的入口是mian函数,即是从main函数开始执行,而main函数的原型是: int main( int argc, char *argv[] ); int main( int argc, char **argv );

Linux 程序设计学习笔记----Linux下文件类型和属性管理

转载请注明出处:http://blog.csdn.net/suool/article/details/38318225 部分内容整理自网络,在此感谢各位大神. Linux文件类型和权限 数据表示 文件属性存储结构体Inode的成员变量i_mode存储着该文件的文件类型和权限信息.该变量为short int类型. 这个16位变量的各个位功能划分为: 第0-8位为权限位,为别对应拥有者(user),同组其他用户(group)和其他用户(other)的读R写W和执行X权限. 第9-11位是权限修饰位,

Linux 程序设计学习笔记----终端及串口编程及实例应用

转载请注明出处,http://blog.csdn.net/suool/article/details/38385355. 部分内容类源于网络. 终端属性详解及设置 属性 为了控制终端正常工作,终端的属性包括输入属性.输出属性.控制属性.本地属性.线路规程属性以及控制字符. 其在系统源代码的termios.h中定义(具体的说明文档http://pubs.opengroup.org/onlinepubs/7908799/xsh/termios.h.html),其结构体成员主要是 Thetermios

Linux 程序设计学习笔记----文件管理系统

本文部分整理自网络 Linux下文件系统管理 1.VFS文件系统概述 linux采用VFS来管理文件系统,而且linux设计的原则之一就是everything is file.因此文件管理系统是linux设计最核心的体现. VFS的全称是Virtual File System (虚拟文件系统). 总体上说 Linux 下的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual Filesystem Switch),三是挂载到 VFS 中的各实际文件系统,

Windows 程序设计 复习笔记(共 77 问)

Windows 程序设计 复习笔记(共 77 问) (个人整理,仅做复习用 :D,转载注明出处:http://blog.csdn.net/hcbbt/article/details/42706501) 知识点 双字节字符集和Unicode字符集有何区别?采用双字节字符集有何问题 双字节字符集(DBCS)编码是0-255,DBCS含有1字节代码与2字节代码,而Unicode是统一的16位系统,这样就允许表示 65536个字符.Unicode中的每个字符都是16位宽而不是8位宽.在Unicode中,

Linux程序设计学习笔记----网络通信编程API及其示例应用

转载请注明出处, http://blog.csdn.net/suool/article/details/38702855. BSD Socket 网络通信编程 BSD TCP 通信编程流程 图为面向连接的Socket通信的双方执行函数流程.使用TCP协议的通信双方实现数据通信的基本流程如下 建立连接的步骤 1.首先服务器端需要以下工作: (1)调用socket()函数,建立Socket对象,指定通信协议. (2)调用bind()函数,将创建的Socket对象与当前主机的某一个IP地址和TCP端口

Linux 程序设计学习笔记----进程管理与程序开发(下)

转载请注明出处:http://blog.csdn.net/suool/article/details/38419983,谢谢! 进程管理及其控制 创建进程 fork()函数 函数说明具体参见:http://pubs.opengroup.org/onlinepubs/009695399/functions/fork.html 返回值:Upon successful completion, fork() shall return 0 to the child process and shall re