PDA

View Full Version : سوالاتی در رابطه با نوشتن یک ادیتور متن



saeid99
سه شنبه 23 مهر 1387, 14:11 عصر
سلام من می خوام که سی پلاس پلاس یه ادیتور متن بنویسم البته خودم می خوام بنویسم و نه از جایی دانلود کنم فقط به سوالات یا مشکلاتی برخوردم ..؟!:گیج:
.................................................. ....
اولیش اینکه چطور میشه که متنی رو از کاربر دریافت کنیم به طوری که علاوه بر اینکه در کاراکتر ها رو هنگام ورود در یک آرایه ذخیره میکنه، و بشه که با کلید های جهت نما نیز در صفحه نمایش حرکت کنه یعنی بتونه بالا و پایین و چپ و راست بره و بتونه تغییرات رو اعمال کنه(ویرایش را انجام بده) تغییرات نیز روی آرایه مورد نظر که کاراکتر ها داخلش قرار میگیره اعمال بشه ؟؟:متفکر:
......................................
دوم چطور میشه هنگامی که عمل ویرایش انجام شد کاربر بتونه با کلید f1 خاتمه ویرایش رو بگه و بعدش دستوراتی که می خوام بنویسم ؟:متفکر:
.....................................
سوم اگه در رابطه با الگوریتم ویرایش متن نظر بهتری دارید ممنون میشم راهنماییم کنید؟:لبخندساده:
اگه ساده بگین ممنون میشم...:لبخندساده:

Nima_NF
سه شنبه 23 مهر 1387, 16:32 عصر
سوم اگه در رابطه با الگوریتم ویرایش متن نظر بهتری دارید ممنون میشم راهنماییم کنید؟

برای شروع بهتر هست از همین گزینه سوم آغاز کنیم؛
نوشتن یک editor حرفه ای در یک محیط گرافیکی باید انجام شود و همه چیز باید توسط خودتان پیاده سازی شود، یعنی تعیین کنید که هر کارکتر و در نتیجه هر خط در مثلا 10 پیکسل قرار می گیرد و ... cursor یا همان خط چشمک زن نیز سفارشی توسط خودتان ساخته شود و نمایش داده شود و غیره.

در یک کلام اگر دنبال ساخت آن در محیط کنسول و یا سیستم عامل Dos هست، بهتر هست فراموش کنید...

اما در ویندوز یا سایر OS های جدید در حالت ساده می توانید از یک EditBox استفاده کنید و برای حالت پیشرفته تر آن(مانند Word ) می توانید یک محیط گرافیکی طراحی کنید همانند مطالب گفته شده فوق.
لینک یک آموزش کامل انگلیسی در این قسمت قرار داده شده است (http://barnamenevis.org/forum/showpost.php?p=548571&postcount=3)

در هر حال در محیط کنسول:
برای انتقال مکان نما با استفاده از توابع آن مانند SetConsoleCursorPosition (کامپایلر های تحت ویندوز)و یا gotoxy قدیمی می توانید این کار را انجام دهید ( برای مثال این دو مورد را در بخش جستجو کنید)

برای دریافت کیبرد نیز می توانید از GetKeyState و یا GetAsyncKeyState استفاده کنید که در محیط کنسول کنترل و کاربردشان سخت است:



if ( GetKeyState(VK_F1) & 0x8000 )
{
// Do something
}

saeid99
شنبه 04 آبان 1387, 18:41 عصر
تشکر از راهنمایی تون که خوب و مفید بود اما من میخواهم در محیط کنسول یا با tc++ برنامه رو بنویسم
در مورد تابع های مختلف که یک رشته رو دریافت میکنن به همراه ویژگی هاشون و همراه مثالی ساده اگه توضیح بدید ممنون میشم....

amir-haghighi
چهارشنبه 08 آبان 1387, 20:13 عصر
به یاد او::

اگر هم که میخواهید متن خودتون رو رنگی نمایش بدید مثل برنامه ویژوال استدیو باید از rtf استفاده کنید.

منبع فارسی برای rtf نداریم اما مایکروسافت خودش مرجع کامل برای یاد گیری rtf هست.به کمک اون میتونید حتی در تکست باکس ها جدول بسازید و ....

saeid99
چهارشنبه 22 آبان 1387, 17:13 عصر
من ميخوام با ++tc بنويسم نه با محيط ويژوال...