请教EditBox的几个特殊效果的实现方法

3661512 2005-11-24 11:29:01
1.当enablewindow(false)以后,如何使编辑框里的字体不要变成灰色,而是保持黑色?
2.如何使编辑框的尺寸随着字符串的尺寸变化而变化?使用GetTextExtent来获得字符串的尺寸,然后
SetWindowPos这种方法,窗体的尺寸和字符串的尺寸不大一样,输入的字符越多,差别就越大。

每个问题50分,请试过可用以后再解答,谢谢!
...全文
94 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
3661512 2005-11-24
谢谢各位,我自己搞定了,结贴
回复
goodboyws 2005-11-24
sorry,最近比较懒
也许用DrawText得到的效果更准确些
CRect rc;
GetClientRect(rc);
pDC->DrawText(str, rc, DT_CALCRECT | DT_EDITCONTROL | DT_LEFT | DT_SINGLELINE/*多行去掉*/);
rc的宽度和高度应该就是你要的。

第一个问题建议你用Read only
回复
3661512 2005-11-24
楼上的各位,你们说的方法,我早就试过了,不行啊.你们有没有自己试过哦?

以下是我输入的代码,效果就是窗口尺寸与字符串尺寸有误差.你们试试吧
void OnChangeEdtNotesTxt()
{
CSize cSize;
CDC *pDC = GetParent()->GetDC();
UpdateData(true);
cSize = pDC->GetTextExtent(m_szEdtText);
SetWindowPos(NULL, 0, 0, cSize.cx, cSize.cy, SWP_NOMOVE);
UpdateData(false);
}


to abesky(神武皇)

你有试过你那段代码吗?
回复
goodboyws 2005-11-24
2. CDC* pDC = GetParent()->GetDC();
pDC->GetTextExtent
回复
StarLee 2005-11-24
第二个问题用MoveWindow
回复
abesky 2005-11-24
添加WM_CTLCOLOR
然后设置
if(nCtlColor==CTLCOLOR_EDIT)
{

pDC->SetTextColor(RGB(0,0,0));//设置字体颜色
//pDC->SetBkColor(RGB(233,233,220));
//HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
试一试
回复
相关推荐
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-11-24 11:29
社区公告
暂无公告