Dev c++如何用鼠标读入计算机只有将数据读入

他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)第一点,使用头文件&windows.h&
要在console里进行操作,首先先说一下ReadConsoleInput()函数。
msdn的具体解释如下:
这个函数主要是用于获取控制台信息。
第一个参数hConsoleInput是设备参数,可以通过GetStdHandle()返回设备句柄。
第二个参数lpBuffer为设备中返回的信息,他是一个INPUT_RECORD的结构体组成的数组。
第三个参数nLength为返回的信息里需要的相应的事件数。(文档里写的是返回信息的指针数组的长度)
第四个参数LPWORD为返回已读记录数。
其实lpBuffer所返回的信息中,包括了多个事件,其中有FocusEvent,KeyEvent,WindowBufferSizeEvent,MouseEvent, MenuEvent多个事件。
我们这里引用鼠标事件,MouseEvent。而在lpBuffer中返回的lpBuffer.Event.MouseEvent.dwMousePosition就是鼠标在控制台界面里的所在位置。
左键单击事件
判断鼠标事件的话,就可以通过 lpBuffer.EventType == MOUSE_EVENT && lpBuffer.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED来判断左键单击事件。
左键双击事件
&lpBuffer.EventType == MOUSE_EVENT &&&lpBuffer.Event.MouseEvent.dwEventFlags == RIGHTMOST_BUTTON_PRESSED
右键单击事件
&lpBuffer.EventType == MOUSE_EVENT &&&lpBuffer.Event.MouseEvent.dwButtonState == RIGHTMOST_BUTTON_PRESSED
其余的事件如下:
所以最后在程序中可以顺利判断各类鼠标状态。
简单的代码例程。
/////////////////////////
// Writen by TianHuahua//
/////////////////////////
#include "stdafx.h"
#include "windows.h"
int main()
HANDLE ConsoleW
INPUT_RECORD eventM
ConsoleWin = GetStdHandle(STD_INPUT_HANDLE);//Get the console window
ReadConsoleInput(ConsoleWin, &eventMsg, 1, &Pointer);//Read input msg
if (eventMsg.EventType == MOUSE_EVENT && eventMsg.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) {
printf("Right button clicked.");
if (eventMsg.EventType == MOUSE_EVENT && eventMsg.Event.MouseEvent.dwEventFlags == RIGHTMOST_BUTTON_PRESSED) {
printf("Left button double clicked.");
有一个问题需要注意:VS中编译,在头文件处,
#include "windows.h"
#include "stdafx.h"
会出现类似错误。Handle:为声明的标识符。
error C2146: 语法错误 : 缺少“;”(在标识符“hServStatus”的前面)
error C2501: “hServStatus” : 缺少存储类或类型说明符
error C2146: 语法错误 : 缺少“;”(在标识符“hSStat”的前面)
error C2501: “hSStat” : 缺少存储类或类型说明符
error C2065: “SERVICE_TABLE_ENTRY” : 未声明的标识符
error C2146: 语法错误 : 缺少“;”(在标识符“DispatchTable”的前面)
error C2065: “DispatchTable” : 未声明的标识符
error C2059: 语法错误 : “]”
error C2143: 语法错误 : 缺少“;”(在“{”的前面)
error C2143: 语法错误 : 缺少“;”(在“}”的前面)
warning C4550: 表达式计算为缺少参数列表的函数
error C2143: 语法错误 : 缺少“;”(在“,”的前面)
error C2143: 语法错误 : 缺少“;”(在“{”的前面)
error C2143: 语法错误 : 缺少“;”(在“}”的前面)
error C3861: “StartServiceCtrlDispatcher”: 即使使用参数相关的查找,也未找到标识符
error C3861: “DispatchTable”: 即使使用参数相关的查找,也未找到标识符
error C2065: “SC_HANDLE” : 未声明的标识符
error C2146: 语法错误 : 缺少“;”(在标识符“schSCManager”的前面)
error C2065: “schSCManager” : 未声明的标识符
error C2146: 语法错误 : 缺少“;”(在标识符“schService”的前面)
error C3861: “SC_HANDLE”: 即使使用参数相关的查找,也未找到标识符
error C2065: “schService” : 未声明的标识符
error C2065: “SC_MANAGER_ALL_ACCESS” : 未声明的标识符
error C3861: “schSCManager”: 即使使用参数相关的查找,也未找到标识符
error C3861: “OpenSCManager”: 即使使用参数相关的查找,也未找到标识符
error C3861: “schSCManager”: 即使使用参数相关的查找,也未找到标识符
解决方法:
改变头文件的顺序如下:
#include “stdafx.h”
#include &windows.h&
参考资料:
http://blog.csdn.net/bnb45/article/details/8042819
http://www.vcerror.com/?p=1944
阅读(...) 评论()// oj3.cpp : Defines the entry point for the console application.//
#include "stdafx.h"#include&iostream&#include&opencv2\opencv.hpp&#include&opencv2/imgproc/types_c.h&
#include &opencv2\objdetect\objdetect_c.h& #include &fstream&
struct my3dim{
};vector&my3dim& mypoint1;vector&my3dim& mypoint2;vector&CvPoint& points1;vector&CvPoint& points2;vector&CvPoint& points3;Mat expanded, img1, img2;Pmy3void onmouse(int event, int x, int y, int flag, void *img)//鼠标事件回调函数,鼠标点击后执行的内容应在此{ switch (event) { case EVENT_LBUTTONDOWN://鼠标左键按下事件
mytmp.label = 1;
circle(img1, cent, 2, Scalar(255, 255, 0), 3);
cout && "第一个
" && x && "
points1.push_back(CvPoint(x, y));
mypoint1.push_back(mytmp);
case EVENT_RBUTTONDOWN://鼠标左键按下事件
mytmp.label = -1;
circle(img1, cent, 2, Scalar(255, 0, 0), 3);
cout && "第一个
" && x && "
points1.push_back(CvPoint(x, y));
mypoint1.push_back(mytmp);
}}void onmouse2(int event, int x, int y, int flag, void *img)//鼠标事件回调函数,鼠标点击后执行的内容应在此{ switch (event) { case EVENT_LBUTTONDOWN://鼠标左键按下事件
cout && "第二个
" && x && "
points2.push_back(CvPoint(x, y));
case EVENT_LBUTTONUP:
}}void onmouse3(int event, int x, int y, int flag, void *img)//鼠标事件回调函数,鼠标点击后执行的内容应在此{ switch (event) { case EVENT_LBUTTONDOWN://鼠标左键按下事件
cout && "第二个
" && x && "
points3.push_back(CvPoint(x, y));
if (x &= img1.cols)
circle(expanded, cent, 2, Scalar(255, 0, 0), 3);
circle(expanded, cent, 2, Scalar(0, 0, 255), 3);
} //imshow("combined", expanded);}
int main(){ img1 = imread("E:\\zhouliyang\\fordebug\\MVS\\data\\5\\back\\key\\00009.jpg");//读取图像 //从文件中读入图像
img2 = imread("E:\\zhouliyang\\fordebug\\MVS\\data\\5\\side2\\key\\00000.jpg");//读取图像
namedWindow("第一个图像");//窗口 //namedWindow("第二个图像", WINDOW_NORMAL);//窗口 setMouseCallback("第一个图像", onmouse, &img1);//注册鼠标事件到&鼠标画个框&窗口,即使在该窗口下出现鼠标事件就执行onmouse函数的内容,最后一个参数为传入的数据。这里其实没有用到 //setMouseCallback("第二个图像", onmouse2, &img2); imshow("第一个图像", img1);
while (true) {
imshow("第一个图像", img1);
int key = waitKey(10);
if (key == 27)
//expanded = srcImg.clone();
destroyAllWindows();
fstream outfile("G:\\download\\points.txt"); if (!outfile) {
cout && "unable open outfile" &&
exit(1); } for (int i = 0; i & mypoint1.size(); i++) {
outfile && mypoint1[i].x && "\t" && mypoint1[i].y && "\t"&&mypoint1[i].label&& } outfile.close();
return 0;}
阅读(...) 评论()Dev-Cpp上机使用说明(2016)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Dev-Cpp上机使用说明(2016)
&&Dev-Cpp上机使用说明
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
还剩5页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 matlab读入excel数据 的文章

 

随机推荐