【发布时间】:2020-09-26 04:19:06
【问题描述】:
我需要在控制台中读取文件并打印文本。如果用户单击单词中的字母,则在控制台底部显示该字母并显示鼠标坐标。 我想出了如何使用 LPPOINT 跟踪鼠标点击和使用 GetCursorPos() 的光标位置。但我找不到如何检测用户点击的符号。我想,我不应该使用 printf() 或 WriteFile() 并使用一些特定的功能? 我现在有这段代码:
#include <stdio.h>
#include <locale.h>
#include <windows.h>
void main ()
{
DWORD fdwMode;
HANDLE file = CreateFile("lab5.in",GENERIC_READ, FILE_SHARE_READ,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
HANDLE hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
HANDLE hstdin = GetStdHandle(STD_INPUT_HANDLE);
HWND hwnd = GetConsoleWindow(); // Дескриптор консольного окна
COORD pos;
pos.X = 10;
pos.Y = 10;
INPUT_RECORD ir;
fdwMode = ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT | ENABLE_EXTENDED_FLAGS;
DWORD actlen = 1;
char buf[100];
char buffer;
char buf1;
if(hstdout==INVALID_HANDLE_VALUE) {
ExitProcess(0);
}
// мышь
LPPOINT pPnt; // координаты мыши
pPnt = malloc ( sizeof(*pPnt) ); // память под переменную координат мыши
while (actlen != 0) {
ReadFile(file,&buf,1,&actlen,NULL);
WriteFile(hstdout,&buf,actlen,&actlen,NULL);
do {
Sleep(100);
GetCursorPos(pPnt); // Координаты курсора мыши (глобальные, весь экран)
ScreenToClient(hwnd, pPnt); // преобразуем координаты в локальные (окно консоли)
// printf("\n Cursor Position: %d %d \n", pPnt[0].x, pPnt[0].y);
if (GetKeyState(VK_LBUTTON) < 0)
printf("\n Left Button Entered \n");
if (GetKeyState(VK_RBUTTON) < 0)
exit(0);
}while(1);
}
对不起我的英语:)
【问题讨论】: