自己写点小东西,需要使用一个能输入字符串的窗口,理想效果就是:回车键一按,呼出一个输入框;接着一通命令敲进去;再回车键一按,完成输入,窗口关闭;然后就得到这个输入的字符串了。
记得windows的API似乎有类似的功能,但是对windows不熟,网上找了一圈也没找到合适的。
用opencv模拟了一个,这里记录一下过程。
整个程序的文本输入主要是通过waitKey()函数模拟实现的,可以支持ascll表字符的输入,但无法进行中文输入。
基础版本:一个函数实现,支持常规的输入、回退及确认操作。
代码如下:
#include<Opencv2\opencv.hpp> #include<windows.h> using namespace cv; string input_command() { //仅支持ascll表字符输入,不支持中文 string command = ""; cvNamedWindow("Input Command"); bool flag = true; while (true) { Mat input_box = Mat(Size(600, 50), CV_8UC3, Scalar(0, 0, 0)); if (flag) putText(input_box, command, Point(10, 30), CV_FONT_HERSHEY_COMPLEX, 0.7, Scalar(255, 255, 255), 2, 8); else putText(input_box, command + "|", Point(10, 30), CV_FONT_HERSHEY_COMPLEX, 0.7, Scalar(255, 255, 255), 2, 8); flag = !flag; imshow("Input Command", input_box); int key_vaule = waitKey(1000);//waitKey()的键值等于ascll编码,未等到输入时的返回值是-1 if (key_vaule == 13)//回车键完成输入 break; else if (key_vaule == -1)//无输入 continue