您的位置:首页 > 其它

实现按钮的左键单击和右键单击事件 编辑框的回车键和ctrl+enter组合键消息响应

2012-09-05 10:23 507 查看
实现按钮的左键单击和右键单击事件 实现编辑框的回车键和ctrl+enter组合键消息响应

VC+MFC里按钮只有单击和双击消息,要实现做简单几何右键单击,得在PreTransLateMessage里面实现;

对话框的PreTranslateMessage里 实现 按钮的左键单击和右键单击事件;

也在里面实现回车键响应和Ctrl+enter组合键响应。

//在这里处理按钮的左键单击和右键单击,编辑框回车和CTRL+ENTR消息
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class

int My_ID=GetWindowLong(pMsg->hwnd, GWL_ID);  //由消息句柄获得发送消息的控件ID号
if(My_ID==IDC_BUTTON1) //点击按钮
{
if(pMsg->message==WM_LBUTTONDOWN) //如果鼠标左键按下
{
MessageBox("左键点击按钮");
}

if(pMsg->message==WM_RBUTTONDOWN) //如果鼠标右键按下
{
MessageBox("右键点击按钮");
}
}

//在此添加对话框里面的编辑框的Enter和Ctrl+enter响应消息
if(My_ID==IDC_EDIT1)// 编辑框
{
if(pMsg->message==WM_KEYDOWN   &&   pMsg-> wParam==VK_RETURN)
{
if( GetKeyState(VK_CONTROL)&0x80 )
{
PostMessage(WM_COMMAND,IDC_EDIT1,0);

UpdateData(true);
CString str;
str.Format("%s\r\n",m_edit);
m_edit.Format("%s",str);
UpdateData(false);

CDC *dc=GetDC();
CSize sz=dc->GetTextExtent(m_edit);
//下面设置光标跟在字符串的最后面
((CEdit*)GetDlgItem(IDC_EDIT1))->SetSel(DWORD(sz.cx),DWORD(sz.cx),TRUE);

return true;

}
else
{
PostMessage(WM_COMMAND,IDC_EDIT1,0);
MessageBox(" Enter");
return true;
}

}
}

return CDialog::PreTranslateMessage(pMsg);
}


源程序见:我的资源 http://download.csdn.net/my
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: