PDA

View Full Version : مبتدی: اجرای دستور مشخص موقع بسته شدن کنسول



mehran901
پنج شنبه 24 مرداد 1392, 01:54 صبح
سلام ،

ی کار خیلی ساده میخواستم انجام بدم ی خلاقیتی به خرج دادم جواب نداد گفتم از دوستان با تجربه ی سی++ بپرسم چرا ؟

میخواستم موقع خروج از کنسول پیغام بده به کاربر به طور مثال اومدم با api و با استفاده از
messageboxA ی پیغام ساختم بعد موقع خروج از فرم برای اینکه بتونم نشون بدم اومدم و یک مخرب ساختم به این شکل :

class keeprunning
{
public :
~keeprunning()
{

MessageBoxA(NULL,"the program will be closed as soon","error",MB_ICONERROR+MB_RETRYCANCEL);

};

};



و داخل برنامه اصلی ی شی ای ازش ساختم

keeprunning test;



ولی موقعی که برنامه توسط دکمه Close بسته بشه این destructor کار نخواهد کرد :متفکر:
به نظرتون چیکار کنم موقع خروج (زدن دکمه کلوز واسه خارج شدن ) ی فانکشنی صدا زده بشه ؟

تشکر از اینکه قراره کمک کنین :ی

مصطفی ساتکی
پنج شنبه 24 مرداد 1392, 12:43 عصر
سلام مهران.
مشکلی نداره به این صورت ،اگر به صورت استاتیک همین روشی که توی سوالت استفاده کردی مخرب فراخوانی میشه در زمانی فراخوانی نمیشه که شما یک اشاره گر از نوع کلاس استفاده کنید و در هنگام استفاده new کنید ولی در هنگام خروج برنامه delete نکنید آن زمان مخرب فراخوانی نمیشه.

mehran901
پنج شنبه 24 مرداد 1392, 12:50 عصر
ولی متاسفانه اگه تست کنین میبینین که درصورتی که دکمه کلوز ! برنامه فشرده بشه مخرب اجرا نمیشه :|
ممنون از پاسختون

مصطفی ساتکی
پنج شنبه 24 مرداد 1392, 12:55 عصر
مشخص نیست برنامتو کجا نوشتی بایستی سورس کامل رو بزاری و اگر هم mfc هستش تو بخش mfc مطرح کنی ولی قاعده کلیش همین بود شاید داری توی scope اشتباه می کنی.

omidshaman
پنج شنبه 24 مرداد 1392, 12:57 عصر
مگه تو win32 وقت بسته شدن یک event نمیاد ؟ اسمش الان یادم نیست چرا از اون استفاده نمی کنی؟

mehran901
پنج شنبه 24 مرداد 1392, 13:11 عصر
مگه تو win32 وقت بسته شدن یک event نمیاد ؟ اسمش الان یادم نیست چرا از اون استفاده نمی کنی؟
پروژ] ی پروژه ی ساده ی کنسول اپلیکیشن هست ، میشه با استفاده از هوک کردن رو خود پنجره متوجه شد که کی بسته میشه ولی میخوام ی روش ساده باشه ... جنبه آموزشی داره

mehran901
پنج شنبه 24 مرداد 1392, 13:13 عصر
مشخص نیست برنامتو کجا نوشتی بایستی سورس کامل رو بزاری و اگر هم mfc هستش تو بخش mfc مطرح کنی ولی قاعده کلیش همین بود شاید داری توی scope اشتباه می کنی.

برنامه mfc نیست که
ی برنامه کنسول اپلیکیشن ساده هست که میخوایم بسته شدن کنسول با تایید کاربر به طور مثال انجام بشه ، تایید یا عدم تایید هم فعلا مهم نیس فعلا وقتی کنسول میخواد بسته بشه ی پیغام بده کافیه :D

ی کلاس و ی main !
کل اجزای تشکیل دهنده این پروژه هست :D

UfnCod3r
پنج شنبه 24 مرداد 1392, 15:26 عصر
کنسول بسته بشه که کلا برنامه یهو بسته میشه .
فکر کنم atexit(); بدردت بخوره :متفکر:

UfnCod3r
پنج شنبه 24 مرداد 1392, 15:27 عصر
http://www.codeproject.com/Articles/2357/Console-Event-Handling
:متفکر:

mehran901
پنج شنبه 24 مرداد 1392, 15:39 عصر
کنسول بسته بشه که کلا برنامه یهو بسته میشه .
فکر کنم atexit(); بدردت بخوره :متفکر:
دستت مرسی ، درواقع اگه exit رو اجرا کنم مخرب اشیای اتوماتیک اجرا نمیشه ولی استاتیک ها اجرا میشن مشکل ی چیز دیگه هست ... درحالت عادی مخرب با به پایان رسیدن برنامه اجرا میشه ولی اگه شما بخوای برنامه رو توسط دکمه close ببندی ، مخرب اجرا نمیشه :متفکر:

اگه کنسول بسته ، قبل بسته شدنش شی ای که ساختیم از بین میره نباید بلافاصله مخربش اجرابشه مگه ؟! نکنه فرصت نمیکنه مخربه اجرا بشه ؟ نمیدونم قضیه چیه والا :قهقهه:

UfnCod3r
پنج شنبه 24 مرداد 1392, 19:12 عصر
مخرب استاتیک هم مگه داریم :متعجب:
فکر کنم منظورت اونایی هست که گلوبال تعریف کردی .
اونا رو خود کامپایلر سازنده هاشو موقع اجرا برنامه و مخرب هاشو هم بعد از بسته شدن برنامه صدا می زنه .
کلا وقتی کنسول بسته میشه دستورات بعدیش هم اجرا نمیشه یهو بسته میشه طوری که نفهمی از کجا خوردی :قهقهه:

mehran901
پنج شنبه 24 مرداد 1392, 21:57 عصر
کلا وقتی کنسول بسته میشه دستورات بعدیش هم اجرا نمیشه یهو بسته میشه طوری که نفهمی از کجا خوردی :قهقهه:
:تشویق: :متفکر: دهنش سرویس ، تنکیو !