PDA

View Full Version : دو سوال در مورد نمايش ديالگ



A_Salimi
چهارشنبه 07 مرداد 1388, 20:34 عصر
سلام

سوال1:
چرا هنگامي كه يك ديالگ را به صورت modless و با روش زير باز ميكنم تمامي كنترل ها روي ديالگ نمايش داده نمي شوند


pDialog = new WaitBar();
pDialog->Create(IDD_DIALOG1,this);
pDialog->ShowWindow(SW_SHOW);


سوال2:
زماني كه ميخواهم تابعي را به صورت خودكار اجرا كنم(يعني مي خواهم با اجراي فايل exe آن هم اجرا شود) در زمان اجرا ديالگ اصلي برنامه محو مي شود. من تابعي را كه قرار است اجرا شود را در OnInitDialogفرا خواني مي كنم.البته ميدانيم كه ديالگ تاقبل از اجراي كامل OnInitDialog نمايش داده نمي شود براي رفع اين مشكل چه بايد كرد و يا تابع را چگونه بايستي Overwrite كرد؟
؟

Nima_NF
چهارشنبه 07 مرداد 1388, 23:26 عصر
۱- شیوه کار به همین شکل هست و کار خاص دیگری نیاز نیست. اشکال کار باید جای دیگری باشد.
سعی کنید برای کنترل های common control از InitCommonControlsEx قبل از نمایش دیالوگ استفاده کنید.

۲- اگر پروسه عملیات طولانی هست راهکار استفاده از یک thread دیگر هست. هرگاه می خواهید دو عمل هم زمان انجام شود و API های مورد استفاده این اختیار را به شما نمی دهند راهکار thread هست.

A_Salimi
پنج شنبه 08 مرداد 1388, 09:56 صبح
شیوه کار به همین شکل هست و کار خاص دیگری نیاز نیست. اشکال کار باید جای دیگری باشد.

براي نمايش معمولي مشكلي وجود ندارد ولي هنگامي كه يك پروسه در ديالوگ parent شروع به فعاليت مي كند اين اتفاق مي افتد.


- اگر پروسه عملیات طولانی هست راهکار استفاده از یک thread دیگر هست. هرگاه می خواهید دو عمل هم زمان انجام شود و API های مورد استفاده این اختیار را به شما نمی دهند راهکار thread هست.

ممكن است براي شروع كار با ترد ها يك منبع درست و حسابي معرفي كنيد؟من با ترد ها در حد كمي كار كرده ام ولي هنوز اشكالهاي زيادي دارم.

با تشكر

Nima_NF
پنج شنبه 08 مرداد 1388, 13:28 عصر
برای thread ها:
نسخه الکترونیکی کتاب Sams Teach Yourself Visual C++ 6 in 21_days
یا نسخه فارسی همین کتاب را (که باید از کتابخانه های دانشگاه ها یا کتاب فروشی های دست دومی تهیه کنید)

کلا اگر مبحث همزمان سازی ها را از کتاب های سیستم عامل مطالعه کنید راحت همنام آن ها کلاس و تابع وجود دارد. ضمنا اگر بیشتر در بخش win32 MSDN بگردید مثال زیاد هست، تقریبا با MFC مشترکند.