用ENTER键切换控件焦点,并模拟按键

翻译|其它|编辑:郝浩|2005-01-25 10:22:00.000|阅读 1421 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


//得到控件类型
CtrlType CENTERView::GetCtrlType(CWnd * pWnd)
{
char buf[512];
CString szTmp;

//定义枚举类型
enum CtrlType
{
EditType, //编辑框
ButtonType, //按钮
OtherType //其它
};


给这个基类添加一个保护方法:

if( pWnd != NULL )
{
::GetClassName( pWnd->GetSafeHwnd(), buf, 512);
szTmp = buf;
szTmp.TrimRight();

if( szTmp == "Edit" )
return EditType;
else if( szTmp == "Button" )
return ButtonType;
else
return OtherType;
}
else
return OtherType;
}

BOOL CENTERView::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (pMsg->message == WM_KEYDOWN)
{
CWnd * pCtrl = NULL;

switch(pMsg->wParam)
{
case VK_ESCAPE://屏蔽ESC
return TRUE;
case VK_RETURN:
{
pCtrl = GetFocus();

//如果当前控件是按钮 就模点击
if( GetCtrlType(pCtrl) == ButtonType )
{
::SendMessage( pCtrl->GetSafeHwnd(), WM_LBUTTONDOWN, 0, 0);
::SendMessage( pCtrl->GetSafeHwnd(), WM_LBUTTONUP, 0, 0);
}
if( GetCtrlType(pCtrl) != OtherType )
GetNextDlgTabItem(pCtrl)->SetFocus();

return TRUE;
}
default:
break;
}
}
return CFormView::PreTranslateMessage(pMsg);
}
 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP