PDA

View Full Version : سوال: استفاده از موس در ++T C



Keyhan Clever
جمعه 18 اردیبهشت 1388, 21:34 عصر
از مهندسین گرامی کسی میتونه در باره کارکرد موس در توربو سی پلاس پلاس توضیح بده ؟

Keyhan Clever
جمعه 18 اردیبهشت 1388, 21:35 عصر
اگه تو ویژوال سی پلاس پلاس و در بخش کنسول هم کسی بلده بگه ممنون میشم

shs_night
شنبه 19 اردیبهشت 1388, 00:20 صبح
با عرض سلام

دوست عزیز شما یه سری به اینجا بزنید:
http://cplusplus.blogsky.com/1388/01/14/post-25/

Nima_NF
یک شنبه 20 اردیبهشت 1388, 01: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)