CHARFORMAT 初始化的问题!~ 我定义了个:CHARFORMAT cf;我初始化cf为:字体为:宋体,字形为:粗斜体,大小:15,下划线:有,颜色:红色。我现在该怎么初始化呢?CHARFORMAT 的结构体看不明白什么意思呀~!谁帮我写下初始化~!谢谢咯~! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 cf.cbSize = sizeof(CHARFORMAT);cf.dwMask = CFM_BOLD|CFM_COLOR|CFM_FACE|CFM_ITALIC|CFM_UNDERLINE;cf.dwEffects = CFE_BOLD|CFE_ITALIC|CFE_UNDERLINE;cf.yHeight = 15*1440/96;cf.yOffset = 0;cf.crTextColor = RGB(255,0,0);cf.bCharSet = 0;cf.bPitchAndFamily = 0;strcpy(cf.szFaceName, "宋体"); 1:其中的字体大小:cf.yHeight = 15*1440/96; 什么意思呢?2:还有网页贴签中的字体还是那种语言的字体里面,还有是用:缇 做单位的,缇与像素是怎么换算的呢?3:还有CHARFORMAT中的字体可以带有删除线,而网页贴签中好像没有这个贴签呢?只有<B>粗体,<U>下划线,<I>斜体,是不是啊?如果要加个删除线怎么表示? 1.那就是象素到缇的转换过程3.删除线<s></s> 我建了个通用对话框,字体的,我将cf赋给FontDlg,打开FontDlg时,在FontDlg框内字体的大小内怎么为空呢?正常应该为15啊.其他的 字体为:宋体,字形为:粗斜体,下划线:有,颜色:红色,都正常的赋给了FontDlg。大家再帮忙解决下:代码: CFontDialog FontDlg(cf,CF_EFFECTS | CF_SCREENFONTS,NULL,this); if (FontDlg.DoModal() == IDOK) { FontDlg.GetCharFormat(cf); m_RichEdit.SetDefaultCharFormat(cf); } 通用对话框 选字体的。。那个cf不是CHARFORMAT,是CHOOSEFONT试试这样void set_font(HWND hDlg, char* fontBuff, int* fontSize){//hDlg是父窗口//fontBuff初始化对话框字体,并且接受最后关闭时选择的字体//fontSize初始化字体大小,并且接受最后关闭时选择的字体大小 TCHAR font[32]; CHOOSEFONT cf; LOGFONT lf; HDC hdctemp; hdctemp=GetDC(0); ZeroMemory(&cf, sizeof(cf)); ZeroMemory(&lf,sizeof(lf));//////////////// lf.lfCharSet=DEFAULT_CHARSET;//字符集 lf.lfHeight = -MulDiv(*fontSize, GetDeviceCaps(hdctemp, LOGPIXELSY), 72);//字体大小 ZeroMemory(&font,sizeof(font)); memcpy(font, fontBuff, strlen(fontBuff)); lstrcpy(lf.lfFaceName, font) ;/////////////////////// cf.hwndOwner=hDlg; cf.lpLogFont=&lf; cf.lStructSize= sizeof(CHOOSEFONT); cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS |CF_TTONLY | CF_SELECTSCRIPT; cf.nFontType=SCREEN_FONTTYPE; cf.iPointSize =0; if(ChooseFont(&cf) !=NULL) { memcpy(fontBuff, cf.lpLogFont->lfFaceName, strlen(cf.lpLogFont->lfFaceName)+1); int x=cf.iPointSize/10; memcpy(fontSize, &x, 4); } ReleaseDC(0,hdctemp);}定义 CHARFORMAT cf 之后最好先ZeroMemory(&cf, sizeof(cf)); 否则容易出现未知错误 调用方法char font[32]="黑体";int fontSize=12;set_font(hDlg, font, &fontSize); cf.dwMask 缺少CFM_SIZE标志位 问 按钮的被选中状态 和 输入焦点的不同 如何检测系统中的可移动存储器,并将他们设置为只读状态 怎样设置对话框大小啊? 我找孙鑫的VC教程找死了。什么都搜不到~!就前3课。 ADO中,打开数据库文件时,怎样做到一个文件可以同时打开多次? 类之间函数调用问题 急:用InstallShield调用vc++开发的Dll出现的数据类型不配的简单问题? (高分100)如何在DLL中输出类? 请大家讨论一下用什么开发数据库(c/s的)比较好 一个关于BMP的问题,大虾请进: 使用一个函数在XP professional和home下的不同结果 如何实时监控一个文件夹下是否有新的文件出现?
cf.dwMask = CFM_BOLD|CFM_COLOR|CFM_FACE|CFM_ITALIC|CFM_UNDERLINE;
cf.dwEffects = CFE_BOLD|CFE_ITALIC|CFE_UNDERLINE;
cf.yHeight = 15*1440/96;
cf.yOffset = 0;
cf.crTextColor = RGB(255,0,0);
cf.bCharSet = 0;
cf.bPitchAndFamily = 0;
strcpy(cf.szFaceName, "宋体");
cf.yHeight = 15*1440/96; 什么意思呢?2:还有网页贴签中的字体还是那种语言的字体里面,还有是用:缇 做单位的,缇与像素是怎么换算的呢?3:还有CHARFORMAT中的字体可以带有删除线,而网页贴签中好像没有这个贴签呢?只有<B>粗体,<U>下划线,<I>斜体,是不是啊?如果要加个删除线怎么表示?
3.删除线<s></s>
代码:
CFontDialog FontDlg(cf,CF_EFFECTS | CF_SCREENFONTS,NULL,this); if (FontDlg.DoModal() == IDOK)
{
FontDlg.GetCharFormat(cf);
m_RichEdit.SetDefaultCharFormat(cf);
}
试试这样void set_font(HWND hDlg, char* fontBuff, int* fontSize){
//hDlg是父窗口
//fontBuff初始化对话框字体,并且接受最后关闭时选择的字体
//fontSize初始化字体大小,并且接受最后关闭时选择的字体大小
TCHAR font[32];
CHOOSEFONT cf;
LOGFONT lf;
HDC hdctemp;
hdctemp=GetDC(0);
ZeroMemory(&cf, sizeof(cf));
ZeroMemory(&lf,sizeof(lf));
////////////////
lf.lfCharSet=DEFAULT_CHARSET;//字符集
lf.lfHeight = -MulDiv(*fontSize, GetDeviceCaps(hdctemp, LOGPIXELSY), 72);//字体大小
ZeroMemory(&font,sizeof(font));
memcpy(font, fontBuff, strlen(fontBuff));
lstrcpy(lf.lfFaceName, font) ;
///////////////////////
cf.hwndOwner=hDlg;
cf.lpLogFont=&lf;
cf.lStructSize= sizeof(CHOOSEFONT);
cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS |CF_TTONLY | CF_SELECTSCRIPT;
cf.nFontType=SCREEN_FONTTYPE;
cf.iPointSize =0;
if(ChooseFont(&cf) !=NULL) {
memcpy(fontBuff, cf.lpLogFont->lfFaceName, strlen(cf.lpLogFont->lfFaceName)+1);
int x=cf.iPointSize/10;
memcpy(fontSize, &x, 4);
}
ReleaseDC(0,hdctemp);
}定义 CHARFORMAT cf 之后最好先
ZeroMemory(&cf, sizeof(cf)); 否则容易出现未知错误
char font[32]="黑体";
int fontSize=12;
set_font(hDlg, font, &fontSize);