PDA

View Full Version : حرکت بین فرم ها در ویژوال سی++6



alimahdavi675
شنبه 04 خرداد 1387, 16:04 عصر
سلام به همه ی دوستان برنامه نویس خصوصا ویژوال نویسها:چشمک: راستش من هر چی تو کتابهای مختلف جستجو کردم برای ارتباط بین فرم ویو ها مطلبی رو پیدا نکردم یعنی همونطور که بین فرمهای دیالگ با تابع ()DoModalمی شه حرکت کرد در یک پروژه ی SinglDocument که بر اساس فرم ویو ساخته شده چطور می شه چند تا فرم ویو ساخت و به هم لینک کرد
ممنون می شم اگه کسی اطلاعاتی تو این زمینه داره من رو در جریان بگذاره

----------------------------------------------------------------------------------------------
با آنکه در میکده را باز ببستند
با آنکه سبوی می ما را بشکستند
با آنکه گرفتند زلب توبه وپیمانه زدستم
با محتسب شهر بگویید که هشیار ....
هشیار که من مست می هر شبه هستم

A_Salimi
شنبه 04 خرداد 1387, 21:08 عصر
در یک پروژه ی SinglDocument که بر اساس فرم ویو ساخته شده چطور می شه چند تا فرم ویو ساخت و به هم لینک کرد


در اونجا هم فرقی نمیکنه شما بایستی در Resourse view شاخه دیالوگ رو باز کنید و با کلیک راست روی دیالوگ، گزینه insert dialog رو انتخاب کنید تا دیالوگ جدیدی برای شما ایجاد بشه .

در مورد لینک کردن هم بایستی برای هر دیالوگ یک کلاس ایجاد کنید . . . بعد هم میتونید از همون Domodal استفاده کنید. (مثل برنامه های مبتنی بر کادر تبادلی)

alimahdavi675
سه شنبه 07 خرداد 1387, 13:16 عصر
آخه عزیزم من دیالگ نمی خوام فرق دیالگ با فرم اینه که دیالگ رو بازدن دکمه اسکپ می شه بست ولی فرم این جوری نیست من می خوام بین فرم ویو ها ارتباط برقرار کنم نه دیالگ ها...!
تو همون مسیری که شما گفتید می تونید نوع فرمتون رو فرم ویو انتخاب کنید ولی با طی مراحلی که عرض کردید این کار امکان پذیر نیست ...
اگه باز هم من رو بیشتر راهنمایی کنید ممنون می شم

SMRAH1
شنبه 11 خرداد 1387, 17:01 عصر
سلام
احتمالا منظور شما فرم هاي Modalless يا غير مدال است (مثل فرم Find در Notepad که با اينکه ظاهر ميشه ولي با پنجره اصلي هم مي تونيم کار کنيم).براي ايجاد اينگونه فرم ها،مراحل زير رو انجام بدهيد.
1- يک ديالوگ جديد توي Resource ها بسازيد و فرضا ID اون رو به ID_DIALOG_ML تغيير بدهي.
2- يک کلاس براي اين ديالوگ ايجاد شده بسازيد و مثل ديالوگ هاي معمولي براي اون برنامه نويسي کند.فرض کنيد اسم کلاس اين ديالوگ رو هم CMlDlg گذاشتيم.
3- در ديالوگي که بايد نقش والد رو براي ديالوگ غير مدال ما داشته باشه،سرفايل کلاس ديالوگ CMlDlg رو اضافه کنيد و يک متغير از نوع اون بسازيد. مثلا


CMldlg m_MlDlg;
4- در تابع OnInitDialog کلاس والد عبارات زير رو وارد کنيد (به ID ديالوگ و نوع متغيرساخته شده توجه کنيد.


m_MlDlg.CreateDialog(ID_DIALOG_ML,this);
m_MLDlg.ShowWindows(SW_SHOW);
5- هر کجا لازم بود مي توانيد ديالوگ فرزند را Hide يا Show کنيد.
6- در کلاس فرزند بهتر است توابعي براي رد و بدول کردن اطلاعات (با ديالوگ والد) فراهم آوريد.
جالب اينکه براي نابودي اين ديالوگ نمي خواهد هيچ کدي بنويسيد و به محض بستن ديالوگ والد،اين ديالوگ نيز نابود مي شود.
در ضمن اگر بگرديد احتمالا توضيحات کاملتري در مورد ديالوگ هاي غير مدال در اين سايت پيدا خواهيد کرد.
اگر هم فقط مشکل در دکمه های ESC و .. است کافیه پیغام های کیبورد رو توی دیالوگ پردازش کنی(بگردی مطالب زیادی در این رابطه هست)و نگذاری دکمه مورد نظر کارش رو انجام بده.
موفق باشيد.