您的位置:程序门 -> vc/mfc -> 界面



edit控件设置字体的问题,请教


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


edit控件设置字体的问题,请教[已结贴,结贴人:hawking20001981]
发表于:2007-12-28 14:20:55 楼主
我想在edit控件中显示手机屏幕那种效果
即:

只有一行以下代码时,显示的是一个大的数字
当超过一行时,例如两行时字体变为原来的一半
4行之后,提示用户不显示。

我现在的想法是:
获得edit的控件长度,
设置一个logfont高是edit的高度,宽也为edit的高度,然后通过得到控件长度与字宽相除得到一行有多少个字
再通过所有输入的字数与每行字数相除得到行数  
字体的高度除以行数来设置当前字的显示大小

现在的效果是   经常显示出来的字是重叠的   一行和下一行显示重叠一半
显示的时候效率特别低

请问各位   该如何实现呢?
发表于:2007-12-28 14:27:421楼 得分:10
建议lz重载cedit类,自己把字“画”出来
发表于:2007-12-28 15:15:522楼 得分:15
先创建logo字体,如:

                logfont   lfont;

lfont.lfweight   =   400;                                   //font   size   =10
lfont.lfheight   =   -14;         //这个就是你要根据需要不断修改的
lfont.lfwidth   =   0;                                     //font   width=20
lfont.lfunderline   =   false;                       //无下划线
lfont.lfstrikeout   =   false;                       //无删除线
lfont.lfitalic   =   false;                             //非斜体
lfont.lfescapement   =   0;//2700;               //字体显示角度=270°
lfont.lfcharset   =   default_charset;       //使用缺省字符集
                  lstrcpy(lfont.lffacename,_t("宋体"));       //system   font   name=@system
m_fontresolution.setcursel(0);

                假如你的edit控件id为idc_edit_record

                lfont.lfheight   =   你需要的值根据你的算法赋值.
                这个font可以根据你的需要不断的修改其参数值,只要在修改结束后执行下面的语句应该就可以了吧
                getdlgitem(idc_edit_record)-> setfont(&font);  
发表于:2008-01-05 14:30:463楼 得分:10
强烈建议去codeproject或vckbase上找个扩展类cedit类,或者重画,否则很麻烦。
发表于:2008-01-07 15:41:184楼 得分:15
这个算法应该是很清楚的吧,就按你自己说的当用户输入后处理wm_char消息,在处理函数里面判断字符串长度,用gettextextend(),当长度超过控件窗口长度时   设置字体     再输出     就行了       记得刷新就可以了~~~
       


快速检索

最新资讯
热门点击