View Full Version : سوال: استفاده از موس در ++T C
Keyhan Clever
جمعه 18 اردیبهشت 1388, 22:34 عصر
از مهندسین گرامی کسی میتونه در باره کارکرد موس در توربو سی پلاس پلاس توضیح بده ؟
Keyhan Clever
جمعه 18 اردیبهشت 1388, 22:35 عصر
اگه تو ویژوال سی پلاس پلاس و در بخش کنسول هم کسی بلده بگه ممنون میشم
shs_night
شنبه 19 اردیبهشت 1388, 01:20 صبح
با عرض سلام
دوست عزیز شما یه سری به اینجا بزنید:
http://cplusplus.blogsky.com/1388/01/14/post-25/
Nima_NF
یک شنبه 20 اردیبهشت 1388, 02:26 صبح
اگه تو ویژوال سی پلاس پلاس و در بخش کنسول هم کسی بلده بگه ممنون میشم
در کامپایلرهای تحت ویندور مانند ++VC باید در یک حلقه و تابع ReadConsoleInput اطلاعات ورودی کنسول را دریافت کنید. در مثال زیر محتویات EventType در InRec مشخص می کند که از کیبرد در حال خواند هستیم (KEY_EVENT) یا از موس (MOUSE_EVENT).
InRec یک ساختار از INPUT_RECORD هست که می توانید در MSDN موارد دیگر ان را مشاهده کنید، InRec.Event.MouseEvent.dwMousePosition مقدار x و Y موس را می دهد.
تابع SetConsoleCursorPosition فقط برای این هست که مکان نما در هنگام چاپ مقدادیر در همان نقطه 0 و 0 باقی بماند.
تذکر:این حلقه همیشه اجاره نمی شود، فقط زمانی که پیامی از ورودی (مانند موس و کیبرد) ارسال شود تابع ReadConsoleInput مقدار بر می گرداند و حلقه دور بعدی خود را می پیماید.
#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
int main(int argc, char* argv[])
{
HANDLE hIn;
HANDLE hOut;
COORD MouseWhere;
COORD EndWhere;
bool loopMe = TRUE;
INPUT_RECORD InRec;
DWORD NumRead;
hIn = GetStdHandle(STD_INPUT_HANDLE);
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
MouseWhere.X = 0;
MouseWhere.Y = 0;
while ( loopMe )
{
ReadConsoleInput(hIn, &InRec, 1, &NumRead);
switch (InRec.EventType)
{
case KEY_EVENT:
if (InRec.Event.KeyEvent.bKeyDown)
{
// If Enter key was pressed
if (InRec.Event.KeyEvent.wVirtualKeyCode == VK_RETURN)
cout << endl;
else // If it is a character
cout << InRec.Event.KeyEvent.uChar.AsciiChar;
}
break;
case MOUSE_EVENT:
COORD MousePos = InRec.Event.MouseEvent.dwMousePosition;
// always set the mouse cursor in pos x,y = 0,3
SetConsoleCursorPosition(hOut, MouseWhere);
cout << "x:"<< MousePos.X << endl;
cout << "y:"<< MousePos.Y << endl;
break;
}
}
getch();
return 0;
}
برای مثال های بیشتر به این سایت مراجعه کنید. (http://www.adrianxw.dk/SoftwareSite/Consoles/Consoles5.html)
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.