请教:怎样实现CEdit控件得到焦点后高亮显示?

xiaok405 2007-06-28 09:43:28
如题,小弟需要实现的功能是::
Edit控件得到焦点后,里面内容由 白底黑字转成黑底白字?
请各位大哥大姐们帮忙看看啊!!
...全文
418 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-10-14
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
向立天 2010-09-15
  • 打赏
  • 举报
回复
就是设置选中么
你动手试一下就知道了
代码就这么两句
linbuilder 2010-09-15
  • 打赏
  • 举报
回复
如题,常规做法是在消息入口OnEnSetfocusEdit2()中直接设置(SetSel(0, -1);SetFocus();),

但经过反复试验,此方法不可行,

分析原因可能是windows会自动将输入光标设置在鼠标点击的位置,而不是全选的状态,

所以我这里采用了满天过海之计,即截获此消息,在消息处理前就做好设置,然后直接返回,代码如下:



BOOL CEditSelAllDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类

if (WM_LBUTTONDOWN == pMsg->message)
{
// 接受焦点前,直接将此控件设置为全选(高亮)状态即可,不再继续处理直接返回
CRect rect;
((CEdit *)GetDlgItem(IDC_EDIT2))->GetWindowRect(&rect);
if (rect.PtInRect(pMsg->pt))
{

  ((CEdit *)GetDlgItem(IDC_EDIT2))->SetSel(0, -1);
 ((CEdit *)GetDlgItem(IDC_EDIT2))->SetFocus();


return TRUE;
}
}

return CDialogEx::PreTranslateMessage(pMsg);
}

Eleven 2010-09-15
  • 打赏
  • 举报
回复
你编辑框得到焦点后,调用CEdit::SetSel()
qiuchengw 2010-09-15
  • 打赏
  • 举报
回复
自绘制。
xiaok405 2007-06-28
  • 打赏
  • 举报
回复
继续等待中~~~~ 期待ing!~~~
xiaok405 2007-06-28
  • 打赏
  • 举报
回复
谢谢啊,,能不能具体点啊?最好能给点 代码啊?
小弟加了三个edit控件,用VK_DOWN控制光标获取焦点,(程序如下),

如何实现由白底黑字改为黑底白字啊??
从哪里下手啊??怎么改?小弟一片茫然! 请给盏明灯啊~


BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if( pMsg->message>=WM_KEYDOWN && pMsg->message<=WM_KEYUP)
{
this->SendMessage(pMsg->message,pMsg->wParam,pMsg->lParam);
return TRUE;
}
else
return CDialog::PreTranslateMessage(pMsg);

}

void CTestDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CWnd*pWnd = GetFocus();
UINT nCtrlID = pWnd->GetDlgCtrlID();
switch(nChar)
{
case VK_DOWN:
{
switch( nCtrlID )
{
case IDC_EDIT1:
GetDlgItem(IDC_EDIT2)->SetFocus();
break;
case IDC_EDIT2:
GetDlgItem(IDC_EDIT3)->SetFocus();
break;
case IDC_EDIT3:
GetDlgItem(IDC_EDIT1)->SetFocus();
break;default:
break;
}

}
break;
default:
break;
}

CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
TieShou 2007-06-28
  • 打赏
  • 举报
回复
SetFocus
SetSel
lzf8977 2007-06-28
  • 打赏
  • 举报
回复
也就是让它全选,,
lzf8977 2007-06-28
  • 打赏
  • 举报
回复

CEdit m_edit ;
m_edit.SetFocus() ;
m_edit.SetSel(0,-1) ;

15,978

社区成员

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

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