PDA

View Full Version : منو



hastyar
سه شنبه 17 آذر 1388, 23:56 عصر
سلام دوستان کسی می تونه برای طراحی منو در ++c راهنماییم کنه سورسشو نمی خوام می خوام خودم بنویسم فقط راهنمایی می خوام لطفاً

mortezamsp
چهارشنبه 18 آذر 1388, 11:57 صبح
منظورت تو توربو هست؟ تو داس؟

براي اين كار اول يه كلاس منو بساز:

class menu
{
public:
menu();
void PrintMenu();
private:
int sx,sy,ex,ey; //مختصات منو درحالت بسته
int items,SelectedItem,pointedItem; //تعداد گزينه ها و گزينه اتخاب شده و گزينه انتخاب شده با ماوس
int opened; //وضعيت منو : بازشده يا بسته شده
}
menu::menu(int i)
{
opened=0;
items=i;
selecteditem=-1;
PointedItem=0;
sx=...
...
}
حالا تابع پرينت رو اينطور بساز:

void menu:print()
{
if( ! opened )
{
//فقط خانه اول را رسم كند
}
else
{
//همه گزينه ها را رسم كند
}
//گزينه اي كه با ماوسانتخاب شده را رنگ كند
//color pointeditem
}
حالا بايد رويداد ماوس را تعريف كني. براي اين كار يه تابع مينويسي كه با توجه به وضعيت ماوس منو رو پرينت ميكنه.و كليك ماوس رو دريافت ميكنه و خونه انتخاب شده رو در selecteditem قرار ميده.


int menu::mouseClicked(int X,int Y,int Click)
{
if(x>=sx && x<=ex && y>=sy && y<=ey && click==1)//منو بسته است و روي آن كليك شده تا باز شود
{
opened=1;
printMenu();
while( ماوس در داخل محدوده منو بازشده قرار دارد و هنوز كليك نشده )
{
getMouseState(&x,&y,&click);
//حساب كنيد ماوس الآن روي كدام خانه هست ، انرا برابر گزينه اشاره شده قرار دهيد
pointedItem=clacPointState(X,Y,sx,ex,sy,ey,items);
}//,جايي كه كليك شده را برگرداند
selectedItem=CalcPointState(...);
return ( SelectedItem ) ;
}
}

تابع mouseClicked بايد از بيرون صدازده شود.

حالا خودت ببين اينا درست درميان؟

hastyar
پنج شنبه 19 آذر 1388, 02:29 صبح
منظورم توی داس بود

mortezamsp
پنج شنبه 19 آذر 1388, 10:11 صبح
این هم توی داس هست.

توربو سی پلاس پلاس تحت داس.

این هم کد یه منوی ساده نوشته شده در مد گرافیک + فایل اجرایی:

البته این رو خوب نتونستم دربیارم چون اینجا فقط تابع main داریم ، وگرنه میشد بهتر درآوردش.

combo_ci
یک شنبه 27 دی 1388, 18:47 عصر
قا مرتضی این هدری که استفاده شده تو این برنامه تو tc 3 نیست

#include<xmouse.h>
میشه بگی با چه ورژنی کامپایل شده؟

mabbaszadegan
یک شنبه 27 دی 1388, 19:10 عصر
توی vs چطور ؟

میشه منو با قابلیت کار با موس طراحی کرد ؟

mortezamsp
یک شنبه 27 دی 1388, 21:11 عصر
ببخشید اگه نیست بقرمایید

www.ilampro.com
پنج شنبه 01 بهمن 1388, 15:48 عصر
سلام دوست عزیز برنامه ات رو نگاه کردم خیلی عالی بود دمت گرم. ولی یک اشکال کوچک داره که منوها از خودشون رد به جا می ذارن یعنی اینکه اثار گرافیکی منو روی صفحه باقی می مونه . می شه بگی چطور باید این مشکل رو حل کرد .
ممنون

mortezamsp
جمعه 02 بهمن 1388, 18:42 عصر
این درواقع رد ماوس هست . فکرکنم باید قبل از چاپ منو دستور hidemouse() رو اجرا کرد و بعد از چاپ منو دستور showmouse() رو چاپ کرد . یا قبل از بستن منو hidemouse() و بعد از بستن منو showmouse() رواجرا کنین .