当控件Disabled后,如何同时改变其控件背景色、字体颜色及字体大小,急急急~~~~

luckychr 2006-03-12 04:02:04
当控件Disabled后,如何同时改变其控件背景色(如改在浅黄色)及字体颜色(如改成蓝色)及字体大小(如原为9号字,改成10号字),可以采用ComboBox控件为例(还有给此控件增加一个只读属性),急急急~~~~,请大家帮忙!!!
...全文
683 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
luckychr 2006-04-06
  • 打赏
  • 举报
回复
急急急~~~~~~~~~``
luckychr 2006-04-06
  • 打赏
  • 举报
回复
下拉列表(CCombobox)控件属于组合控件,既由两个控件合成,分别为输入框(EditBox)及按钮(Button),请问分别如何获取该两(小)控件的CWnd,或操作它(如改变其控件的颜及字体)。
请各位兄弟、姐妹出招,在此先谢过~~~~~
luckychr 2006-04-03
  • 打赏
  • 举报
回复
多谢各位提供的思路,尤其striking(硬撑者),EditBox及Combobox控件上述功能我现都已实现,请问继承CDatetimeCtrl控件如何实现上述功能,请各位现次出招,本人不胜感激。
zylthinking 2006-03-29
  • 打赏
  • 举报
回复
editbox, 首先抓屏,把editbox 放到画图中,然后放大 800%,研究editbox边框是哪几个线条构成的,然后把这个控件背景色改成需要的背景色,然后再画线,重画出那几个边框,然后在算坐标,在合适的地方写字。

似乎也想不出简单办法。

或者将其窗口类中默认刷子替换成需要的刷子,假如他那个背景白色是默认刷子画的,这个办法很可能是最省劲的修改其背景色的办法了,我只是猜,可能不管用的,不想做试验了
zylthinking 2006-03-29
  • 打赏
  • 举报
回复
肯定要自画,因为非标准控件外观。
可以先 disablewindow,然后再wm_paint,在paint中重画控件外观,应该可以实现的
luckychr 2006-03-29
  • 打赏
  • 举报
回复
高手们,出招呀,真的很急~~~~~``
luckychr 2006-03-20
  • 打赏
  • 举报
回复
请问EditBox控件如何实现上述功能???
luckychr 2006-03-17
  • 打赏
  • 举报
回复
谢,请高手继续讨论~~~~```
striking 2006-03-14
  • 打赏
  • 举报
回复
以combobox为例, 它有个属性是 OWNER DRAW 设为fixed。

以下是它自画的一段例子。

void CComboEx::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
// ASSERT();
if (lpDIS->CtlType == ODT_COMBOBOX)
{


COLORREF crBackground, crText;

//Create A CDC from the SDK struct passed in
CDC* pDC = CDC::FromHandle(lpDIS->hDC);


if (lpDIS->itemState & ODS_SELECTED)//被选择的时候
{
// Set the text background and foreground colors
crBackground = GetSysColor (COLOR_HIGHLIGHT);//背景
crText = GetSysColor (COLOR_HIGHLIGHTTEXT);//文本颜色
}
else if(lpDIS->itemState & ODS_DISABLED)//禁用的时候
{
// Set the text background and foreground colors to the standard window
// colors
crBackground = GetSysColor (COLOR_WINDOW);//背景颜色
crText = GetSysColor (COLOR_WINDOWTEXT);//文本颜色
}
pDC->SetBkColor(crBackground);
pDC->SetTextColor(crText);
//If the item is selected, draw the selection background
if ((lpDIS->itemState & ODS_SELECTED) &&
(lpDIS->itemAction & (ODA_SELECT | ODA_DRAWENTIRE)))
{
// item has been selected - draw selection rectangle
CBrush br(crBackground);
pDC->FillRect(&lpDIS->rcItem, &br);
}

//If the item is not selected, draw a white background
if (!(lpDIS->itemState & ODS_SELECTED) &&
(lpDIS->itemAction & ODA_SELECT))
{
// Item has been de-selected -- remove selection rectangle
CBrush br(crBackground);
pDC->FillRect(&lpDIS->rcItem, &br);
}
}
}

//参考一下吧, 对你应该有帮助
luckychr 2006-03-14
  • 打赏
  • 举报
回复
该控件就是动态创建的,恳请大家帮忙解决,再次谢谢大家
striking 2006-03-12
  • 打赏
  • 举报
回复
这个控件是要自画的。

15,979

社区成员

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

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