有问题就有答案
Q1:MFC编程实现文本编辑器如何设定字型,字号,字体颜色
声明一个CFont变量,然后设置变量的字型,字号等,再把变量SelectObject到当前DC里,之后再TextOut就是设定过的字体了
Q2:在C++的MFC工具栏按钮中实现改变单文档字体大小的方法
CFONTDIALOG ?
Q3:mfc 如何改变对话框字体大小
以上方法都是用来设置整个对话框的字体。您想在静态文本控件还是编辑文本控件中输出?例如,如果将控件变量m_editor与此控件相关联,则可以使用此变量来设置字体m_editor。setFont();这将使设置生效。
Q4:MFC 静态文本如何调整字体大小
在WM_CTLCOLOR:中,更改DC字体。为避免资源泄漏,请将此字体保存为类成员。
Q5:如何改变mfc对话框中的控件中的字体大小
VC的对话框字体设置对所有控件都有效,静态文本的字体不能单独更改。首先用CreateFont创建一个字体对象,然后调用控件的SetFont。例子:1。更改静态样式的ID,如:IDC_STATIC1 2。添加一个编辑控件并建立一个关联控件m_editControl。3.将以下代码添加到OnIntDialog:CFont * f;f=新的CFontf-CreateFont(16,//nHeight 0,//nWidth 0,//nEscapement 0,//nOrientation FW_BOLD,//nw八字TRUE,//bItalic FALSE,//bUnderline 0,//cStrikeOut ANSI_CHARSET,//nCharSet OUT _ DEFAULT _ precise,//nOutPrecision CLIP _ DEFAULT _ precise,//nClipPrecision DEFAULT _ QUALITY,//nQuality _ DEFAULT _ PITCH | FF _ SWISS,//npitchinckfamily _ T(" Arial ");//lpszFacm_editControl。setFont(f);M_editControl。SetWindowText("询问专家");GetDlgItem(IDC _ static 1)-SetFont(f);运行结果如下图所示,下载完整示例CtrlFont.zip需要注意的是,这里使用的是CFont指针,而不是普通的CFont局部变量。如果程序更改为以下内容:CFont f;f.CreateFont(16,//nHeight 0,//nWidth 0,//nEscapement 0,//nOrientation FW_BOLD,//nWatch TRUE,//bItalic FALSE,//bUnderline 0,//cStrikeOut ANSI_CHARSET,//nCharSet OUT_DEFAULT_PRECIS,//nOutPrecision CLIP _ DEFAULT _ PRECIS,//nClipPrecision DEFAULT _ QUALITY,//nQuality DEFAULT _ PITCH | FF _ SWISH,//npitckhandlefamily _ T(" Arial ");m_editControl。setFont(f;);M_editControl。SetWindowText("询问专家");GetDlgItem(IDC _ static 1)-SetFont(f;);运行后无法得到想要的效果,因为在执行OnInitDialog函数后,CFont f将被清除。在对话框关闭之前,您必须确保设置字体设置的字体对象有效。因此,指针或类成员通常用于保存创建的字体对象。对于非MFC程序,先用CreateFont创建一个字体句柄,然后用SendMessage发送消息控制WM_SETFONT,将建立的字体句柄赋给过去。CHeight是字体的高度。CWidth是字体的宽度。CEscapement是字体的倾斜角度。COrientation是字体的倾斜角度。cwx8是字体的粗细。BItalic是字体是否是斜体。BUnderline是字体是否带下划线。BStrikeOut是字体是否有删除线。ICharSet是字体使用的字符集。IOutPrecision是指定如何选择合适的字体。IClipPrecision用于确定切割精度。iQuality如何匹配所选字体?IPitchAndFamily是间距标志和属性标志。PszFaceName是字体的名称。CreateFont()函数的MSDN翻译函数:这个函数创建一个特殊的逻辑字体,以后任何设备都可以选择。函数原型:hfont创建字体(int height,int nwidth,int n escape,int n orientation,int fn weight,dword fdwltalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD fdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCTSTR lpszFace); 参数: nHeight:指定字体的字符单元或字符的逻辑单位高度,字符的高度值(也被称为em高度)是指字符单元高度值减去内部标头值。字体映射器以如下方式解释nHeight指定的值,各值含义为: >0:字体映射器转换这个值以设备单位,并和已有字体的单元高度相匹配。 0:字体映射器转换在选择匹配时用一个缺省的高度值。 <0:字体映射器转换这个值到设备单位,并将它的绝对值和已有字体的字符高度相匹配。 比较所有的高度,字体映射器选择不超过要求大小的最大字体。 此映射当字体第一次被使用时发生。 对于MM_TEXT映射方式,可以用下面的公式为一种指定了点大小的字体确定高度: nHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY),72) nWidth:指定所要求字体的字符的逻辑单位的平均宽度。如果此值为0,字体映射器选择一个closest match值,closest match值是由比较当前设备的特征系数与可使用字体的数字化特征系数之差的绝对值而确定的。 nEscapement:指定移位向量和设备X轴之间的一个角度,以十分之一度为单位。移位向量平行于正文行的基线。 Windows NT:当图形设备设置为GM_ADVANCED时,可以不依赖字符串的字符的定位角而指定字符串的移位角。 当图形模式被设置为GM_COMPATIBLE时,nEscapement同时指定移位角和定位角,可以设置nEscapement和nOrientation为相同的值。 Windows 95:nEscapement同时指定移位角和定位角,可设置nEscapement和nOrientation为相同的值。 nOrientation:指定每个字符的基线和设备X轴之间的角度。 FnWeight:在0到1000之间指定字体的权值,如400表示标准体,700表示黑(粗)体,如果此值为0,则使用缺省的权值。 为方便定义,可使用如下值: FW_DONTCARE:0;FW_THIN;100;FW_EXTRALIGHT;200;FW_ULTRALIGHT;200;FW_LIGHT;300; FW_NORMAL:400;FW_REGULAR;400;FW_MEDIUM;500;FW_SEMIBOLD;600;FW_DEMIBOLD;600; FW_BOLD:700;FW_EXTRABOLD;800;FW_ULTRABOLD;800;FW_HEAVY;900;FW_BLACK;900。 fdwItalic:如果设置为TRUE则指定斜体。 fdwUnderline:如果设置为TRUE,则指定加下划线的字全。 fdwStrikeOut:如果设置为TRUE,则strikeout指定字体。 fdwCharSet:指定字符集,下列值是预定义的: 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。 韩国Windows:JOHAB_CHARSET; 中东地区Windows:HEBREW_CHARSSET; ARABIC_CHARSET 泰国Windows:THAI_CHARSET OEM_CHARSET指定的字符集与操作系统有关。 可以使用DEFAULT_CHARSET值来允许字体的名字和大小来充分描述逻辑字体。如果指定的字体名不存在,任何字符集的字体都可以替代指定的字体,所以应该小心地用DEFAULT_CHARSET来避免不期望的结果出现。 操作系统中存在其他字符集的字体。如果一个应用程序用一种未知字符集的字体,则应用程序不会试图去翻译或解释用那种字体写出来的字符串。 在字体映射过程中此参数很重要。为确保获得一致的结果,指定一个特殊的字符集。如果在lpszFace参数中指定了一个字体名,确定fdwCharSet值与由lpszFace指定的字体字符集是否匹配。 fdwOutputPrecision:指定输出精度,输出精度义输出与要求的字体高度、宽度、字符定位、移位、字符间距和字符类型的匹配程序,它可取下列值之一: OUT_CHARACTER_PRECIS;未用。 OUT_DEFAULT_PRECIS:指定缺省的字体映射器状态。 OUT_DEVICE_PRECIS:指示字体映射器在当系统里有多种字体使用同一个字体使用同一个名字时选择一种设备字体。 OUT_OUTLINE_PRCIS:在Windows NT中此值指示字体映射器从TrueType和其他基于边框的字体中选择。 OUT_RASTER_PRECIS:指示字体映射器在当系统里有多种字体使用同一个名字时选择一种光栅字体。 OUT_STRING_PRECIS:此值没有被字全映射器使用,但是当扫描字体被列举时作为返回值。 OUT_STROKE_PRECIS:在Windows NT中此值没有被字体映射器使用,但是当TrueType字体、其他基于边框的字体和向量字体被列举时,作为返回值。 Windows 95:此值没有被字体映射器使用,但是当TrueType字体或向量字体被列举时,作为返回值。 OUT_TT_ONLY_PRECIS:指示字体映射器仅从TrueType字体中选择,如果系统中没有安装TrueType字体,则字体映射返回缺省状态。、 OUT_TT_PRECIS:指示字体映射器在当系统里有多种同名的字体时选择一种TrueType字体。 当操作系统含有多种与指定名字同名的字体时,应用程序可以使用OUT_DEVICE_PRECIS,OUT_RASTER_PRECIS和OUT_TT_PRECIS值来控制字体映射器如何选择一种字体,例如,如果操作系统含有名字Symbol的光栅和TrueType两种字体,指定OUT_TT_PRECIS使字体映射器选择TrueType方式。指定OUT_TT_ONLY_PRECIS使字体映射器选择一种TrueType字体,尽管这会给TrueType字体换一个名字。 fdwClipPrecision;指定裁剪精度,裁剪精度定义如何裁剪部分超出裁剪区的字符,它可取一个或多个下列值: CLIP_DEFAULT_PRECIS:指定缺省裁剪状态。CLIP_CHARACTER_PRECIS:未用。 CLIP_STROKE_PRECIS:未被字体映射器使用,但是当光栅字体、向量字体或TrueType字体被列举时作为返回值。在Windows环境下,为保证兼容性,当列举字体时这个值总被返回。 CLIP_MASK:未用。CLIP_EMBEDDED:要使用嵌入式只读字体必须使用此标志。 CLIP_LH_ANGLES:当此值被使用时,所有字体的旋转依赖于坐标系统的定位是朝左的还是朝右的。 如果未使用此值,设备字体总是逆时针方向旋转,但其他字体的旋转依赖于坐标系统的定向。要得到更多关于坐标系统定向的信息,参见参数orientation。 CLIP_TT_ALWAYS:未用。 fdwQuality:指向输出质量,输出质量定义GDI如何仔细地将逻辑字体属性与实际物理字体属性相匹配。它可取下列值之一: DEFAULT_QUALITY:字体的外观不重要。 DRAFT_QUALITY:字体外观的重要性次于使用PROOF_QUALITY时,对GDI光栅字体,缩放比例是活动的,这意味着多种字体大小可供选择,但质量可能不高,如果有必要,粗体、斜体、下划线、strikeout字体可被综合起来使用。 PROOF_QUALITY:字符质量比精确匹配逻辑字体字体属性更重要。对GDI扫描字体,缩放比例是活动的,并选择最接近的大小。尽管当使用PROOF_QUALITY时,选择字体大小并不完全匹配,但字体的质量很高,并没有外观上的变形。如果有必要,粗体、斜体、下划线、strikeout字体可被综合起来使用。 fdwPitchAndFamily:指定字体间距和字体族,低端二位指定字体的字符间距,它可取下列值之一: DEFAULT_PITCH;FIXED_PITCH; VARIABLE_PITCH 高端四位指定字体族,可取下列值之一: FF_DECORATIVE:新奇的字体,如老式英语(Old English)。FF_DONTCARE:不关心或不知道。 FF_MDERN:笔划宽度固定的字体,有或者无衬线。如Pica、Elite和Courier New。 FF_ROMAN:笔划宽度变动的字体,有衬线。如MS Serif。 FF_SCRIPT:设计成看上去象手写体的字体。如Script和Cursive。 FF_SWISS:笔划宽度变动的字体,无斜线。如MS Sans Serif。
Q6:在MFC中使用哪个函数可以改变字体大小
lnPointSize函数是字体大小,以0.1磅(像素/点/磅)为单位。例如,汉字的字号与npointsize值和磅的对应关系如下表所示:汉字字号incPointSize值磅初数420 42 4 140 14小学360 36小学4 120 1 260 26 5 105 10.5小学1 240 24小学5 90 9