`
helloyesyes
  • 浏览: 1305195 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

VC中关于WM_CHAR消息的调用问题

阅读更多

用VC编写一个指法练习的小程序,如图所示。

大致功能是:

启动则随即显示一行字母,然后敲击键盘,击键代码与光标指针“ ^ ”对应字母相同,则消去字母行中该字母,否则保留。

这个程序别的都好说,主要的问题是对WM_CHAR消息的响应问题。

为了截获键盘击键的值,需要用到WM_CHAR消息。但在Project中添加该消息后会发现,程序无法响应该消息。即击键后程序并没有执行到该消息对应的函数处。参考MSDN对该消息的描述:

This member function is called by the framework to allow your application to handle a Windows message. The parameters passed to your function reflect the parameters received by the framework when the message was received. If you call the base-class implementation of this function, that implementation will use the parameters originally passed with the message and not the parameters you supply to the function.

关键的意思是要执行WM_CHAR消息,程序焦点必须在主窗口上。但不幸的是,程序运行以后,焦点在按钮上。解决的方式是使用PreTranslateMessage消息,进行处理,将焦点设置到主窗口上。具体代码如下:

BOOL CTTDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class

if ( pMsg->message == WM_KEYDOWN ||pMsg->message == WM_CHAR)
{
{
pMsg->hwnd = m_hWnd;
return FALSE;
}
}

return CDialog::PreTranslateMessage(pMsg);
}

此后即可响应WM_CHAR消息了。

上面文字,关键是学习设置应用程序焦点的方法!

源代码:

http://ffrock.bokee.com/inc/TT.rar

分享到:
评论

相关推荐

    vc消息捕捉.rar_VC 鼠标_vc 娑堟伅_消息_键盘_键盘 vc

    标题"vc消息捕捉.rar_VC 鼠标_vc 娑堟伅_消息_键盘_键盘 vc"暗示了这个压缩包包含的代码示例是关于如何在VC++中实现鼠标和键盘消息的捕获。"娑堟伅"看起来像是一个错误的字符序列,我们暂时忽略,重点放在“鼠标”和...

    禁止list control的水平滚动条

    - **WM_CHARTOITEM**:由具有`LBS_WANTKEYBOARDINPUT`样式的列表框发送,响应`WM_CHAR`消息。 - **WM_SETFONT**:设置字体。 - **WM_GETFONT**:获取字体。 - **WM_SETHOTKEY**:与热键相关联。 - **WM_...

    VC基于MFC文本编辑程序

    通过处理CEdit的ON_WM_CHAR()消息,可以实现在编辑器中输入字符。同时,需要实现WM_COPY、WM_PASTE和WM_CUT消息来处理剪贴板操作。 2. **字体改变**:用户应能选择不同的字体、字号和颜色。这涉及到使用CFont类创建...

    两个VC对话框程序的键盘消息响应与快捷键的实现

    在提供的压缩包文件中,"VC对话框程序的键盘消息响应与快捷键的实现.rar"可能包含了完整的示例代码,你可以下载并学习。而"对话框中使用“Ctrl+回车”.rar"则可能是专门针对使用Ctrl+回车快捷键的实例,你可以结合这...

    VC鼠标、键盘响应操作源代码

    在"VC鼠标、键盘响应操作源代码"中,我们可以看到如何在C++类中定义消息处理函数,例如OnMouseMove、OnLButtonDown等,这些函数会在对应的鼠标或键盘消息到达时被调用。通过重载这些函数,我们能实现自定义的交互...

    VC CString最全面的总结 常用数据类型使用转换详解等总结

    在Windows程序设计中,了解和熟练使用各种消息是至关重要的。以下是对这些关键消息的详细说明: 1. **窗口消息**: - WM_CREATE:在窗口创建时发送,用于执行必要的初始化工作。 - WM_DESTROY:窗口被销毁之前...

    vc子类化,使指定进程的EDIT不能输入'a'的外挂_基于这个可以作出给指定进程换肤的程序来.rar

    当检测到WM_CHAR消息(表示键盘输入事件)并且消息包含字符'a'时,程序会阻止该消息的进一步处理,使得字符'a'无法显示在EDIT框中。 实现这一功能的步骤大致如下: 1. **创建钩子**:使用SetWindowsHookEx函数注册...

    vc编程检测u盘插入

    - 这是`WM_DEVICECHANGE`消息中传递的一个结构体,用于描述硬件设备的信息。 - **成员变量**: - `dbch_devicetype`:指定设备的类型。 - `dbch_hdevnotify`:设备的通知句柄。 - 对于U盘等存储设备,通常会...

    vc6.0下屏蔽edit控件里面的小数点

    在VC6.0中,编辑框接收并处理来自键盘的输入是通过WM_CHAR消息完成的。当用户按下键盘上的键时,操作系统会发送WM_CHAR消息到编辑框控件,然后由控件处理这个消息。如果我们希望阻止某些键的输入,可以在父窗口类中...

    在MFC对话框与单文档中实现键盘消息

    在MFC中,键盘事件处理主要是通过对相应的消息的响应,这些事件有如:WM_CHAR、WM_KEYDOWN、WM_KEYUP等它们分别对应OnChar、OnKeyDown、OnKeyUp消息处理函数。其中,WM_CHAR表示字符事件,WM_KEYDOWN表示键盘的键被...

    vc 根据焦点输汉字

    这可以通过调用 `PostMessage()` 函数并设置相应的消息类型(如 `WM_CHAR`)来完成。在示例代码中,使用以下方式向目标窗口发送每个汉字字符的输入事件: ```cpp for (int i = 0; i (); i++) { ::PostMessage(hWnd...

    vc技术内幕学习笔记WORD

    Windows操作系统使用消息驱动机制,例如`WM_CREATE`、`WM_LBUTTONDOWN`、`WM_CHAR`、`WM_CLOSE`、`WM_COMMAND`和`WM_TIMER`等预定义消息。理解这些基本消息对于Windows编程至关重要。此外,Windows的Graphical ...

    vc教学word文档.

    在“VC教学word文档”中,我们主要探讨了关于Visual C++(VC)的一些核心概念和技术,主要包括交互式图形显示技术、VC编程的特点、软件安装与基本操作、菜单功能、工具栏的创建以及光标、图标、键盘命令和窗口提示...

    VC 制作文本编辑器

    我们需要为控件注册消息处理函数,如WM_CHAR消息用于处理键盘输入,WM_LBUTTONDOWN等消息用于处理鼠标操作。 **三、实现步骤** 1. **创建工程**:在VC++环境中,选择“文件”>“新建”>“项目”,选择MFC AppWizard...

    限制Edit Control输入的字符

    4. **处理WM_CHAR消息**:在自定义窗口过程中,我们需要特别关注`WM_CHAR`消息,因为它表示用户在Edit Control中键入了一个字符。如果接收到的`wParam`(代表字符码)不是字母或数字,我们可以选择忽略该消息,或者...

    jisuanqi.rar_VC简易计算器

    - 使用ON_WM_CHAR消息处理键盘输入,允许用户直接通过键盘输入数字和运算符。 - ON_WM_ERASEBKGND消息处理防止闪烁,提高用户体验。 通过这个VC++简易计算器项目,我们可以学习到如何使用MFC构建GUI程序,理解C++...

    VC考试填空题

    - 按键消息(如**WM_KEYDOWN**、**WM_KEYUP**)和字符消息(如**WM_CHAR**)是两种常见的键盘事件消息。 - `TranslateMessage`函数用于将按键消息转换为字符消息,便于程序进一步处理。 #### 鼠标响应 **特点与...

    windows应用程序键盘响应程序二.rar_VC 键盘

    3. `TranslateMessage`:此函数用于翻译消息队列中的消息,特别是WM_KEYDOWN和WM_KEYUP消息,将它们转换为字符消息(如WM_CHAR)。这对于处理组合键(如Ctrl+C)和非ASCII字符的输入至关重要。 4. `PeekMessage`:...

    用VC实现特定编辑框上对回车键响应

    CEditView类本身继承自CView类,并且它是一个Edit控件,能够响应键盘输入相关的消息,例如WM_CHAR、WM_KEYDOWN和WM_KEYUP等。这些消息的处理函数可以被用来捕捉回车键的输入并执行相应的操作。 在对话框中放置编辑...

Global site tag (gtag.js) - Google Analytics