如何在对话框构架下响应按键消息?(我没分了)

happyness44 2006-03-21 08:52:15
我在对话框构架下添加OnKeyDown()消息响应函数
一点反应都没有
是不是对话框不响应按键消息,
如果要实现的话,怎么实现?
...全文
136 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Snow_Ice11111 2006-03-21
  • 打赏
  • 举报
回复
不能把VB中的键盘事件处理方法搬到VC中来,VC中的对话框工程所有的消息都要经过消息转发函数PreTranslateMessage,所以按楼上各位说的,在这里面自己判断消息的类型和接收消息的窗口后再处理。
tufaqing 2006-03-21
  • 打赏
  • 举报
回复
重载函数PreTranslateMessage:
void CAdasdDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
MessageBox("");
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
BOOL CAdasdDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if( pMsg->message == WM_KEYDOWN )
SendMessage(WM_KEYDOWN); // 响应OnKeyDown
return CDialog::PreTranslateMessage(pMsg);
}

或者:
BOOL CAdasdDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if( pMsg->message == WM_KEYDOWN )
{
//直接在这里处理
}
return CDialog::PreTranslateMessage(pMsg);
}

建议用方法1
一个傻冒 2006-03-21
  • 打赏
  • 举报
回复
OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
在函数体里,你判断nChar的虚拟键值了吗?
pripor 2006-03-21
  • 打赏
  • 举报
回复
在mfc中
派生对话框时添加一对宏
BEGIN_MESSAGE_MAP(CMyView, CView)
ON_WM_MOUSEACTIVATE()
ON_COMMAND(ID_EDIT_CLEAR_ALL, OnEditClearAll)
ON_UPDATE_COMMAND_UI(ID_EDIT_CLEAR_ALL, OnUpdateEditClearAll)
ON_BN_CLICKED(ID_MY_BUTTON, OnMyButton)
END_MESSAGE_MAP()

检查是否将你的相应函数填入宏之中
lixiaosan 2006-03-21
  • 打赏
  • 举报
回复
BOOL CTest6Dlg::PreTranslateMessage(MSG* pMsg)

{
if( pMsg->message == WM_KEYDOWN )

{


{

switch( pMsg->wParam )

{

case 65://A


AfxMessageBox("a");
}

}

}
return CDialog::PreTranslateMessage(pMsg);

}

15,976

社区成员

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

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