请问在基于对话框的程序中怎样拦截键盘输入?如有代码更好!立等给分

liuguangzhou 2002-09-29 05:07:38
如题。
...全文
54 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
papaya_stone 2002-09-30
  • 打赏
  • 举报
回复
只有放在dll中系统才能将他注入别的进程
tcice 2002-09-30
  • 打赏
  • 举报
回复
如上所说,对了oldworm请教个问题,钩子为什么要写在动态库中,难道写在
程序中有问题吗?我对钩子不太了解,就看了下这里一位老兄的笔记,讲的算简单
可是实用价值不大!
Luo_Yong 2002-09-30
  • 打赏
  • 举报
回复
To:
oldworm(oldworm)
To:
所有朋友

请教一个问题,为什么在对话框上不能切换到中文输入法呢?我想通过WM_CHAR或WM_IME_CHAR 输入截取到汉字。。。。

感谢!
nie173 2002-09-30
  • 打赏
  • 举报
回复
UP
stone8532 2002-09-30
  • 打赏
  • 举报
回复
up

鸟总是会飞的,即使是菜鸟!
tzsak 2002-09-30
  • 打赏
  • 举报
回复
www.vckbase.com有一个按键发音的代码,里有你所需的
nuaazwg 2002-09-30
  • 打赏
  • 举报
回复
也可以写在程序中吧
demonking 2002-09-29
  • 打赏
  • 举报
回复
要在PreTranslateMessage()中处理
oldworm 2002-09-29
  • 打赏
  • 举报
回复
不知你是要拦截当前对话框的键盘输入还是系统的键盘输入,如是当前对话框的键盘消息,代码如下:
BOOL CShellPreviewListCtrl::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
if(pMsg->wParam == VK_RETURN)
{
int index = GetNextItem(-1, LVNI_SELECTED);
if(index >= 0){
ITEMNODE *pDataItem = (ITEMNODE *)GetItemData(index);
if(pDataItem){
GetExpreviewDlg(this)->OnOk(pDataItem->szFileName);
}
}
}
}

return CListCtrl::PreTranslateMessage(pMsg);
}

如果是要拦截系统键盘输入(不管什么窗口),那么你需要用键盘钩子,并将拦截代码写到一个dll中。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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