مسیج باکس در c++ دات نت

saalek110

Well-Known Member
با سلام.
من فکر می کنم باید در کدهای ما باشه. نه در هدر.
می دانید که دستوراتی که با # شروع می شوند برای راهنمایی کامپایلر هستند.
در اینجا انگار برنامه قاطی می کنه و کامپیایلر هدایت میشهو
به نظر من مشکل کد شمتا نیست. چون در این سایت که گفتم هم این قضیه مشاهده شده. بهتره در گوگل سرچ کنید و ببینید این اشکال را دیگران چطور پوشش داده اند.
 

sara_she

Member
ممنون مشكلم با messagebox بلاخره حل شد

من undef MessageBox # رو در stdafx.h قرار دادم براي فايل dll‌ام و براي فرم هاي net. هم اين عبارت رو تو هدرشون گذاشتم
حالا ديگه ازش خطا نمي گيره و چه show‌رو بنويسم چه ننوسم اونو نشون مي ده
 

sara_she

Member
--------------------------------------------------------------------------------

بازهم با messagebox مشكل پيدا كردم ولي ايندفعه مي خوام از messagebox خروجي بگيرم يعني كدي به صورت زير داشته باشم كه اگه كاربر okاز messageboxرو كليك كرد يه سري كد خاص اجرا بشه :

کد:
if (MessageBox(NULL,"رشته","عنوان",MB_YESNO)==IDYES)
	  {


موقع buildكردن با خطاي زير مواجه مي شوم :

error C2514: 'System::Windows::Forms::MessageBox' : class has no constructors


ولي اگه messageboxرو به صورت زير به كار ببرم مشكلي ندارم :

کد:
MessageBox::Show("رشته","عنوان",
		        MessageBoxButtons::OK,
				MessageBoxIcon::Information);

البته طبق پستهاي قبل #undef MessageBox رو لحاظ كردم مي خواستم بدونم ايم مشكل چرا به وجود مي ياد و راه حل رفعش چيه

سوال ديگه اينكه من در كد اولي متد showرو استفاده نكردم پس اگه فرض كنيم تعريف درست اجرا مي شد messageboxنمايش داده مي شد؟
 

sara_she

Member
مشكل حل شد

بايد
کد:
#pragma comment(lib,"user32.lib")//for messagebox

را به پروژه اضافه كنيم . من اين كد رو تو stdafx.h قرار دادم
 
آخرین ویرایش:

saalek110

Well-Known Member
سلام.
بذارین یه طور دیگه قضیه رو بررسی کنیم.
کد زیر زیر بدون هیچ مشکلی اجرا میشه :
کد:
#include "stdio.h"
#include "WinSock2.h"
int main()
{
 return 0;
}

اما فرض کنیم شما میخواین از هم Windows.h استفاده کنین :
با اینکه لازم نیست دیگه WinSock2.h رو به برنامه اضافه کنین ، فرض میکنیم این کار رو انجام دادین :

کد:
#include "Windows.h"
#include "WinSock2.h"
 
int main()
{
 return 0;
}

اگه کد بالا رو اجرا کنین نزدیک به 60 تا error ایجاد میشه مبنی بر اینکه یک سری
از توابع و ثابت ها دوباره تعریف شدن.
اگه شما در برنامتون هم از Windows.h استفاده کردین و هم از WinSock2.h کافیه ماکروهای زیر رو
به اول برنامه اضافه کنین :

کد:
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif

#include "Windows.h"
#include "WinSock2.h"
 
int main()
{
 return 0;
}

در این صورت برنامه بدون خطا اجرا میشه. بازم تاکید میکنم در صورت استفاده از Windows.h
لازم نیست WinSock2.h رو به برنامه اضافه کنین. دلیلش هم در تعریف زیر که در Windows.h شده
هست :

کد:
#if(_WIN32_WINNT >= 0x0400)
#include <winsock2.h>
#include <mswsock.h>
#else
#include <winsock.h>
#endif /* _WIN32_WINNT >=  0x0400 */

با تشکر.
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا