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

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

每个问题50分,请试过可用以后再解答,谢谢!
...全文
146 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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);
}
试一试

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧