ورود

View Full Version : سوال: پیدا کردن مختصات لمس در اندروید



applle
سه شنبه 26 آبان 1394, 19:51 عصر
سلام دوستان.من میخوام با C++‎‎‎ کاری کنم که وقتی یه جای صفحه گوشی رو لمس کردم مختصات x و y اون نقطه رو بهم بده.
البته برای windows این کارو با کد زیر انجام دادم.ولی هر چقدر گشتم برای android کد مناسبو پیدا نکردم.کد برای windows:

#include "StdAfx.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;
int main()
{
INPUT_RECORD rec;
DWORD evk;
HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
int x_pos, y_pos;

while(true)
{
SetConsoleMode(hIn, ENABLE_MOUSE_INPUT);
for(;;)
{
ReadConsoleInput(hIn, &rec, 1, &evk);
if(rec.EventType == MOUSE_EVENT)
{
if(rec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
{
x_pos = rec.Event.MouseEvent.dwMousePosition.X;
y_pos = rec.Event.MouseEvent.dwMousePosition.Y;
break;
}
}
}
system("cls"); //safhe ro paak mikone
cout << x_pos << " " << y_pos;
}
}
من از C4DROID استفاده میکنم.
دوستان اگه چیزی در این رابطه میدونید دریغ نکنید.
سوال بعدی:کدی که در بالا نوشتم مختصات رو به صورت int میده و اگر هم که x_point رو float کنم بازم int بهم میده.
کسی میدونه چطور میتونم مختصات رو با دقت بالاتر بدست بیارم.مثلا float.
اگه سورس بذارین ممنون میشم.
آخرین سوال یکم بحسش فرق داره:
وقتی unicode هایی مثل ♚ ♛ ♜ ♝ ♞ ♟ را در visual studio 2010 میزنم میگه که نمیتونه بخونه و چند تا گزینه میده که با اون ها encode کنم.مثل:unicode utf8 یا latin 3 یا...
اگرم که گزینه مناسبو انتخاب نکنم اشکال بی معنی بهم میده.
با چی باید encode کنم؟
ممنون
یا علی

کامبیز اسدزاده
پنج شنبه 28 آبان 1394, 13:56 عصر
سلام دوستان.من میخوام با C++‎‎‎‎ کاری کنم که وقتی یه جای صفحه گوشی رو لمس کردم مختصات x و y اون نقطه رو بهم بده.
البته برای windows این کارو با کد زیر انجام دادم.ولی هر چقدر گشتم برای android کد مناسبو پیدا نکردم.کد برای windows:

#include "StdAfx.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;
int main()
{
INPUT_RECORD rec;
DWORD evk;
HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
int x_pos, y_pos;

while(true)
{
SetConsoleMode(hIn, ENABLE_MOUSE_INPUT);
for(;;)
{
ReadConsoleInput(hIn, &rec, 1, &evk);
if(rec.EventType == MOUSE_EVENT)
{
if(rec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
{
x_pos = rec.Event.MouseEvent.dwMousePosition.X;
y_pos = rec.Event.MouseEvent.dwMousePosition.Y;
break;
}
}
}
system("cls"); //safhe ro paak mikone
cout << x_pos << " " << y_pos;
}
}
من از C4DROID استفاده میکنم.
دوستان اگه چیزی در این رابطه میدونید دریغ نکنید.
سوال بعدی:کدی که در بالا نوشتم مختصات رو به صورت int میده و اگر هم که x_point رو float کنم بازم int بهم میده.
کسی میدونه چطور میتونم مختصات رو با دقت بالاتر بدست بیارم.مثلا float.
اگه سورس بذارین ممنون میشم.
آخرین سوال یکم بحسش فرق داره:
وقتی unicode هایی مثل ♚ ♛ ♜ ♝ ♞ ♟ را در visual studio 2010 میزنم میگه که نمیتونه بخونه و چند تا گزینه میده که با اون ها encode کنم.مثل:unicode utf8 یا latin 3 یا...
اگرم که گزینه مناسبو انتخاب نکنم اشکال بی معنی بهم میده.
با چی باید encode کنم؟
ممنون
یا علی

کدی که گذاشتید برای ویندوز هست و روی اندروید جواب نمیده.
برای اینکار شما باید از کتابخانه های چند سکویی C++ استفاده کنید.
به این مستند نگاه کنید دقیقا چیزی هست که لازم دارید : http://doc.qt.io/qt-5/qtsensors-cpp.html

حامد مصافی
پنج شنبه 28 آبان 1394, 18:27 عصر
c4droid یک محیط برنامه‌نویسی است. این محیط از کامپایلر‌های سی/سی‌پلاس‌پلاس پشتیبانی می‌کند. برنامه نوشتم با یک کامپایلر سی‌پلاس‌پلاس در اندروید شرط ناکافی برای دسترسی به کل سیستم‌عامل است.
می‌توانید در همین محیط از stl یا کیوت استفاده کنید. اما سی‌پلاس‌پلاس خالص، خیر. چنین امکانی به شما نمی‌دهد.
در کل در این محیط فقط می‌توانید کدهای ساده را تست کنید نه اینکه یک برنامه کامل بنویسید.

applle
پنج شنبه 28 آبان 1394, 21:34 عصر
c4droid یک محیط برنامه‌نویسی است. این محیط از کامپایلر‌های سی/سی‌پلاس‌پلاس پشتیبانی می‌کند. برنامه نوشتم با یک کامپایلر سی‌پلاس‌پلاس در اندروید شرط ناکافی برای دسترسی به کل سیستم‌عامل است.
می‌توانید در همین محیط از stl یا کیوت استفاده کنید. اما سی‌پلاس‌پلاس خالص، خیر. چنین امکانی به شما نمی‌دهد.
در کل در این محیط فقط می‌توانید کدهای ساده را تست کنید نه اینکه یک برنامه کامل بنویسید.

پس چطور با زبان c++ برای اندروید برنامه هایی مینویسند که از لمسی پشتیبانی میکنه؟یعنی همه آنها از stl استفاده میکنند؟
در ضمن من دقیقا نمیدونم stl چیه؟اگه یکم توضیح بدین ممنون میشم

من در جایی خوندم که با کتابخانه Xlib و تابع XQueryPointer میشه اینکار را انجام داد.میشه یا نه؟اگه آره ممنون میشم یه مثال بزنین.:چشمک:

کامبیز اسدزاده
جمعه 29 آبان 1394, 09:25 صبح
پس چطور با زبان C++‎‎‎‎ برای اندروید برنامه هایی مینویسند که از لمسی پشتیبانی میکنه؟یعنی همه آنها از stl استفاده میکنند؟
در ضمن من دقیقا نمیدونم stl چیه؟اگه یکم توضیح بدین ممنون میشم

من در جایی خوندم که با کتابخانه Xlib و تابع XQueryPointer میشه اینکار را انجام داد.میشه یا نه؟اگه آره ممنون میشم یه مثال بزنین.:چشمک:

خوشبختانه یکی از قابلیت هایی که C++‎‎‎ داره پشتیبانی از کتابخانه های مختلفه ...
برای برنامه های لمسی هم کافیه از کتابخانه های Qt استفاده کنید، کتابخانه های stl هم کتابخانه های پیشفرض C++‎‎‎ هستند.

applle
یک شنبه 01 آذر 1394, 00:26 صبح
واقعا ممنون از آقای اسد زاده.اما من یه مشکل جدید پیدا کردم:وقتی از #include <QApplication> استفاده کردم بطور خودکار std plugin و Ministro را دانلود کرد.حالا وقتی از

header بالا استفاده میکنم درست کامپایل میکنه ولی موقع اجرا خیلی سریع

stdplugin روبازمیکنه و سریعا اونو میبنده بعد هم سریع ministro رو باز و بسته

میکنه و دیگه هیچی.


یعنی صفحه dust رو باز نمیکنه.مشکل از کجاس؟:متفکر:باید چیکار کنم؟کد نمونه:

#include <iostream>
#include <QApplication>
#include <QTouchEvent>
using namespace std;
int main()
{
int a;
cin>>a;
return 0;
}

کامبیز اسدزاده
یک شنبه 01 آذر 1394, 10:23 صبح
واقعا ممنون از آقای اسد زاده.اما من یه مشکل جدید پیدا کردم:وقتی از #include <QApplication> استفاده کردم بطور خودکار std plugin و Ministro را دانلود کرد.حالا وقتی از

header بالا استفاده میکنم درست کامپایل میکنه ولی موقع اجرا خیلی سریع

stdplugin روبازمیکنه و سریعا اونو میبنده بعد هم سریع ministro رو باز و بسته

میکنه و دیگه هیچی.


یعنی صفحه dust رو باز نمیکنه.مشکل از کجاس؟:متفکر:باید چیکار کنم؟کد نمونه:

#include <iostream>
#include <QApplication>
#include <QTouchEvent>
using namespace std;
int main()
{
int a;
cin>>a;
return 0;
}


من متوجه این نشدم که دارید چیکار میکنید و مشکل شما کجاست ولی نیازی به minstro و اینجور چیزا نیست.
minstro رو غیر فعال کنید و از حالت Bundle Qt library in APK رو فعال کنید.
بهترین حالت برای تنظیمات از نظر من به صورت زیر هست:

136962