你会吗?(一定给分100)

shopkid 2002-04-25 04:22:09
我从CEdit 继承新类CMyEdit
请问怎么样处理:
当得到焦点时Edit的背景色变成蓝色
失去焦点时Edit的背景色变成白色?
把过程写下来,我运行出来的一定给分!
...全文
51 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
freelybird 2002-04-26
  • 打赏
  • 举报
回复
legerwu(leger)做得不够优美,效率也不高,应该子类化.我已实现,很简单的,不超过8条语句
shaohua 2002-04-26
  • 打赏
  • 举报
回复
同意legerwu(Leger),应该比 freelybird(阿愚) 做的容易些。
但 freelybird(阿愚) 的也可以实现。
freecutelei 2002-04-26
  • 打赏
  • 举报
回复
呵呵。 大家说得对,hand一下
freelybird 2002-04-26
  • 打赏
  • 举报
回复
怎么还不给我消息,我的电话:(010)65057801-2208
LegerWu 2002-04-26
  • 打赏
  • 举报
回复
头文件中定义各变量:

HBRUSH m_hBlueBrush;
HBRUSH m_hWhiteBrush;

BOOL flag;

CWnd* pCurWnd;

对话框OnInitDialog()中创建刷子,变量初始化:
m_hBlueBrush = CreateSolidBrush(RGB(0,0,255));
m_hWhiteBrush = CreateSolidBrush(RGB(255,255,255));

flag = FALSE;
pCurWnd = GetDlgItem(IDC_EDIT1);

SetTimer(100,100,NULL);//设置定时器

HBRUSH CDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if (pWnd->GetDlgCtrlID() == IDC_EDIT1)
{
if (flag)
{
return m_hBlueBrush;
}
else
{
return m_hWhiteBrush;
}
}

return hbr;
}

BOOL CDlgDlg::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
if (m_hBlueBrush)
{
DeleteObject(m_hBlueBrush);
m_hBlueBrush = NULL;
}

if (m_hWhiteBrush)
{
DeleteObject(m_hWhiteBrush);
m_hWhiteBrush = NULL;
}

KillTimer(100);

return CDialog::DestroyWindow();
}

void CDlgDlg::OnTimer(UINT nIDEvent)
{
if (pCurWnd == (this->GetFocus()))
{
flag = TRUE;
}
else
{
flag = FALSE;
}

pCurWnd->InvalidateRect(NULL);
pCurWnd->UpdateWindow();

CDialog::OnTimer(nIDEvent);
}
freelybird 2002-04-26
  • 打赏
  • 举报
回复
我做了一个demo,把你的email给我,我给你发过出.
freelybird 2002-04-25
  • 打赏
  • 举报
回复
这个问题还没搞定吗?其实我不能帮你写整个过程,只能告诉你方法,否则你也太不劳而获了.
1. 改变背景色的画刷在OnctlColor(),你必须重载它,其实这一点你也知道;此外,你须设置一布尔变量,每当获得焦点与失去焦点时,你必须要使这个函数起作用,即重绘,而且画刷是不同的颜色.
2. 实在不行,你就把对象的属性设置为自己绘制,这样你不得不自己绘背景,我想更麻烦
shopkid 2002-04-25
  • 打赏
  • 举报
回复
这个难道没人会吗?

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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