引言: 信息产业部电子第二十二研究所青岛分所 郎锐
一、引言
在通常的以CEditView为基类的单文档/多文档视图程序中,可以很好的响应键盘输入的回车键,只需比较最近两次的输入的字符,看看最新输入的字符是否内码是13(0x0d,回车键的内码)即可识别出来,而要单独把一个编辑框放入对话框中却根本不...
摘要:上下控件是windows中最常用的控件之一。它只不过是一对箭头,用户可单击它来增加或减少控件的设定值。通常,紧靠着上下控件有一个编辑控件,称为伙伴编辑控件或伙伴控件,用于显示用户输出的值。上下控件在应用程序中用途非常广泛,但目前在纵多出版资料中很少提及其实现方法,使软件开发者甚感迷惑。其实,在visual
c++6.0中可以很轻松的实现这一控件。笔者通过试验摸索,对上下控件的实现作一简要介绍,以......
摘要:作者:安静
vc6.0 w2k编译通过
这类小程序,能用的地方很多.所以就写一个完整的代码
给大家参考参考
#include "stdafx.h"
#include <iostream.h>
const dword maxlen = 100;
void showdriveinfo(lptstr drive)
{
//输出设备类型
uint......
特定的编辑框上实现对回车键的响应信息产业部电子第二十二研究所青岛分所 郎锐
一.引言 【程序编程相关:
VC6 的小BUG —— fmodf()】
【推荐阅读:
实习的9天(郁闷时间较多)
】
二.不能响应回车键的原因分析 【扩展信息:
VC自绘按钮的实现(NO MFC)
】
在通常的以ceditview为基类的单文档/多文档视图程序中,可以很好的响应键盘输入的回车键,只需比较最近两次的输入的字符,看看最新输入的字符是否内码是13(0x0d,回车键的内码)即可识别出来,而要单独把一个编辑框放入对话框中却根本不响应,这个看似简单的问题在实际应用中还是解决起来比较困难的.尤其是当一个充当表单录入的对话框上有若干个编辑框,这就要求在一个编辑框添完一项表单后用习惯的回车键将该编辑框上的数据读取到内存中去,并自动将光标移动到下一个编辑框中准备填写下一栏表单.无疑这种界面是十分人机友好的,使录入人员不必去执行每填一下表单就去按一下执行读入到缓存功能的按钮的烦琐操作.但上述功能的实现却并不象其演示的功能那样简单,下面本文就对这项技术的实现及附带的其他技术作简要的介绍.
之所以在以ceditview作为基类的程序中可以响应回车键,是由于该程序的视类本身就是一个edit控件,这就是问题的关键所在.ceditview作为cview的派生类能响应从键盘输入的各种消息,其中有与键盘输入相关的wm_char.wm_keydown.wm_keyup等消息.我们就可以在这些消息的响应函数中灵活地设计程序去捕捉到回车键的输入,并执行响应的操作.
当我们将编辑框作为一个普通的控件放到对话框上时情况就发生了变化.在此我们以cformview为例,它也是cview的一个派生类,视是一个form窗体(即对话框),当放有编辑框的窗体有回车键输入时,由于只有编辑框可以接受从键盘输入的字符,所以当键盘按下时统统把消息都发给了编辑框(在windows下每个窗口.按钮.编辑框都看作一个窗口,都可以接受消息),可以通过classwizard在"object ids"选中编辑框所对应的id号,在右边的消息框中可以看出该编辑框并不能响应wm_char等消息,只能用en_change事件来做类似的响应.可当我们加入了对该事件的处理函数时,却又将回车键当作控制字符,当输入回车键并不会激发en_change事件,也就是说用这种方法仍旧无法捕获回车键的输入.
三.拦截回车键的思路与方法
windows操作系统下各个窗口.控件归根结底都是通过系统的各种各样的消息来相互协调.相互联系的,而我们所遇到的这个问题换到消息的角度说就是"如何使程序能响应在编辑框上输入的回车键所发出的消息",只要能响应到这个消息,剩下的工作都可以在消息处理函数中完成.所以有必要对windows系统的消息机制做些了解.
每个windows应用程序开始执行后,windows都为该程序创建一个"消息队列(message queue)",用来存放邮寄给该程序可能创建的各种不同窗口的消息....
下一页 摘要:■ 穆文烨
基于windows nt/2000 的应用系统中,一些关键的人机交互工作站,常需要了解并记录所有操作人员操作计算机的情况。如: 在工业控制领域,一些使用计算机对设备进行监视和控制的工作站,需要非常高的可靠性和安全性。在这些工作站上通常要求只能运行系统所要求的应用程序,不能运行与系统无关的程序,同时要求对计算机操作人员的所有原始输入进行记录,以便出现事故(如操作故障、程序异常退出)的......