如何知道哪个CEdit控件获得焦点?

zhengllc 2008-09-27 10:41:32
如何知道哪个CEdit控件获得焦点?
有很多个CEdit控件,现在要判断是哪个控件获得了焦点.
...全文
326 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengllc 2008-09-27
  • 打赏
  • 举报
回复
TO FireBirdCN :
你的MSDN是中文版的吗?有中文版的吗?
m_nNightmire 2008-09-27
  • 打赏
  • 举报
回复
在主窗口中调用
CWnd *pWnd = GetFocus();
if( pWnd )
{
UINT nID = pWnd->GetDlgCtrlID();
switch( nID )
{
case IDC_EDIT1:
blablalba...
}
}
FireBirdCN 2008-09-27
  • 打赏
  • 举报
回复
CWnd::GetFocus

static CWnd* PASCAL GetFocus( );

返回值:
指向拥有当前焦点的窗口的指针,如果没有焦点窗口,则返回NULL。这个指针可能是临时的,不能被保存以供将来使用。

说明:这个函数获得指向当前拥有输入焦点的CWnd的指针
hgz25251325 2008-09-27
  • 打赏
  • 举报
回复
GetFocus
  • 打赏
  • 举报
回复
int CWND::GetDlgCtrlID();
  • 打赏
  • 举报
回复
HWND GetFocus()
m_nNightmire 2008-09-27
  • 打赏
  • 举报
回复
case WM_LBUTTONDOWN: //左键按下
case WM_LBUTTONUP: //左键抬起
case WM_LBUTTONDBCLK: //左键双击
case WM_RBUTTONDOWN: //右键按下
case WM_RBUTTONUP: //右键抬起
case WM_RBUTTONDBCLK: //右键双击
还有什么鼠标中键的几个消息,我记不清了...
按键:
ENTER - VK_RETURN
ESC - VK_ESCAPE
空格 - VK_SPACE
上下左右 - VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT...
zhengllc 2008-09-27
  • 打赏
  • 举报
回复
啊,谢谢谢谢!
在里面加鼠标按键/ENTER 处理,应该使用什么参数呢?
switch( pMsg->message )
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
if( pMsg->wParam == VK_TAB )
}
m_nNightmire 2008-09-27
  • 打赏
  • 举报
回复
switch( pMsg->message )
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
if( pMsg->wParam == VK_TAB )
}
zhengllc 2008-09-27
  • 打赏
  • 举报
回复
BOOL CFocusDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==VK_TAB)
{
int i= VK_TAB;
}
return CDialog::PreTranslateMessage(pMsg);
}

重载了下PreTranslateMessage()。我按tab键,程序怎么进步到if语句里面阿。
m_nNightmire 2008-09-27
  • 打赏
  • 举报
回复
貌似只有用pretranslatemessage...
zhengllc 2008-09-27
  • 打赏
  • 举报
回复
按下按钮时,或者按TAB键,都要获得edit控件的焦点位置。应该用哪个消息啊?
FireBirdCN 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhengllc 的回复:]
TO FireBirdCN :
你的MSDN是中文版的吗?有中文版的吗?
[/Quote]
我的MSDN 不是中文的
我给你发的是从 MFC详解 中复制的 网上很多

在主窗口类中 添加 鼠标消息
void CXXXDlg::OnLButtonDown(UINT nFlags, CPoint point)
再处理
CWnd *pWnd = GetFocus();
if( pWnd )
{
UINT nID = pWnd->GetDlgCtrlID();
switch( nID )
{
case IDC_EDIT1:
blablalba...
}
}
zhengllc 2008-09-27
  • 打赏
  • 举报
回复
传递给主窗口的是哪个消息?
m_nNightmire 2008-09-27
  • 打赏
  • 举报
回复
不要在按钮的消息处理函数中...
只有按钮获得焦点时才有可能调用消息处理函数...当然只能得到按钮的ID了...
放在主窗口的消息处理中
dayong576 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhengllc 的回复:]
to m_nNightmire
我在按扭控件的消息处理函数中调用了
CWnd *pWnd = GetFocus();
if( pWnd )
{
UINT nID = pWnd->GetDlgCtrlID();
switch( nID )
{
case IDC_EDIT1:
blablalba...
}
}
返回的ID值都是一个值。
[/Quote]
肯定的,返回的是你的按钮ID,这时候焦点在按钮上

你的问题只能添加SetFocus然后在里面记录最后的焦点所到的Edit的ID然后处理你的问题就可以了。
zhengllc 2008-09-27
  • 打赏
  • 举报
回复
to m_nNightmire
我在按扭控件的消息处理函数中调用了
CWnd *pWnd = GetFocus();
if( pWnd )
{
UINT nID = pWnd->GetDlgCtrlID();
switch( nID )
{
case IDC_EDIT1:
blablalba...
}
}
返回的ID值都是一个值。

15,979

社区成员

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

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