ورود

نسخه کامل مشاهده نسخه کامل : balloon



cpplover
03-01-2008, 14:15
با عرض سلام خدمت به اعزای این تالار گفتگو :



کسی هست که بتونه به این سوال پاسخ بده؟ ممنون میشم اگه جواب بدید


ایجاد بالون (روی ایکن try )
visual c ++
ممنون میشم اگه کسی بتونه کمک کنه
با تشکر

someone
03-01-2008, 15:11
سلام.
دوست عزیز از ایجاد چند %Dice:1Man:"ssdp:discover"MX:3D8

cpplover
03-01-2008, 20:00
سلام دوست گرامی

خسته نباشید
متاسفانه برنامه واسه من سرتاسر از eror بود
اولا m_nid دقیقا چیه؟ احتمالا باید توسط یک struct تعریف بشه ؟ مگه نه ؟
واون struct چیه ؟
من فقط حدس زدم که شاید نیاز به struct ، NOTIFYICONDATAباشه اما اینطور نبود
ضمنا اگه ممکنه در مورد برنامه های دیالوگ بگین کد باید کجا کپی شه ؟
بعد هم در این برنامه ها میشه لطف کنید بگید این کد های بزرگ رو
چطور میشه یاد گرفت ؟ مثلا علامت ::=
و یا _T یعنی چی ؟ ممنون میشم .
خطاها :






'm_nid' : undeclared identifier


error C2228: left of '.cbSize' must have class/struct/union type


error C2228: left of '.uFlags' must have class/struct/union type
و خطاهای مشابه
ضمنا منظوذتون از %Dice:1Man:"ssdp:discover"MX:3D8 چی بود؟
با تشکر

m3hrz4d
03-01-2008, 23:08
آخر منو میخوایین ایجاد کنین یا بالون ؟ (منظورتون از بالون مثل اینی هست که برای Windows Update میاد دیگه؟
(مثلا برای نشون دادن پیغام))
-
شاید اگه توی همون تاپیک ادامه میدادیم بهتر بود چون دوباره باید ارجاع بشه به اون Icon ی که درست کردیم...
-
پ.ن : الان تاپیک های دیگه رو دیدم چرا چند تا تاپیک زدین؟
پیشنهاد میکنم متن تاپیک Balloon And Contex Menu رو که کامل تره کپی کنین همین جا و ادمین محترم هم اون اضافی ها رو حذف کنن.
-
چیزی که شما توی اون تاپیک نوشته بودین و روشی که گفته بودین مربوط به MFC یا پروژه های قبلی ++Visual C نمیشه مربوط به پروژه های Windows Form هستن که شما میتونی توی ++C هم مثل VB و #C کل محیط برنامه رو Design کنی (اسم پیش فرض پنجره Form هست) که این نوع پروژه رو که با ++C بتونی اینطوری برنامه بنویسی توی VS2005 دیدم که توی این نوع پروژه ها شما مثل #C یا VB.NET از تلنولوژی دات نت توی برنامه ی ++C استفاده میکنی...
اما ظاهرا که شما میخوای برنامه ی MFC بنویسی پس با این روش کاری نداری.
برای نشون دادن منوی توی MFC میتونی اون منو رو اول طرای کنین(توی قسمت Resource ها فایل Resource برنامه رو انتخاب کنین و بعد از راست کلیک Add Resource رو بزنین) و بعد از طراحی منو اون رو Load کنین و نشون بدین.
بعد از طراحی یک عضو برای کلاس Dialog توی بگیرین. این کار شی کار لود و نشون دادن رو انجام میده :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید لود کردن رو مثلا توی پروژه های Dialog Based میتونین در OnInitDialog انجام بدین:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدضمن اینکه IDR_SYSTRAYMENU آیدی منویی هست که طراحی کردین.
خوب حالا شما 2 کار باید بکنین.یکی اینکه وقتی روی آیکن کلیک میشه منو رو نشون بده یکی هم اینکه وقتی یکی از آیتم های منو انتخاب شد کاری که میخواهین رو انجام بدین.
طیق چیزهایی که توی تاپیک قبلی برای کار با SysTrayIcon گفتم :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدبا دادن this به عنوان پارامتر آخر TrackPopUpMenu خود کلاس مسئول عکس العمل مناسب در مقابل کلیک شدن منو ها هست و پیغام های کلیک شدن بهش ارسال میشه.
تقریبا باید مثل کاری که برای SysTrayIcon انجام دادم انجام بدیم.
یک متد برای کلاس دیالوگمون برای گرفتن پیغام مربوط به کلیک شدن آیتم اول منو تعریف میکنیم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدو بعد توی فایل cpp دیالوگ توی قسمت MESSAGE_MAP کد لازم رو برای فراخوانی این متد هنگام دریافت پیغام مینویسیم :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدکه اینجا ID_FIRST_ITEM آیدی آیتم اول منو هست که موقع طراحی منو بهش دادیم.
بعد هم متد رو پیاده سازی میکنیم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدتوصیه میشه که قبل از بسته شدن دیالوگ Resource های رو به اصطلاح آزاد کنین.واسه این کار میتونین از متد OnDestroy استفاده کنین.
طبق قبل نمونه اولیه رو به قسمت تعریف کلاس اضافه کنین :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدو توی MESSAGE_MAP هم اضافه کنین :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدو توی پیاده سازی هم متد DestroyMenu ی m_SysTrayMenu رو فراخوانی کنین . ضمن اینکه میتونین کار حذف کردن SysTrayIcon رو هم اینجا انجام بدین :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

کد دوستمون رو هم میتوی برای Baloon استفاده کنی. m_nid همون Struct مربوط به ساختن آیکن هست.شما میتونی این رو به عنوان یه خصوصیت برای کلاس Dialog ت در نظر بگیری و توی مثلا OnInitDialog مثل کدی که دوستمون داده Icon رو درست کنی.
توی این حالت همزمان با درست شدن آیکن, بالون هم ظاهر میشه.
اگه بخوانی توی یه زمان خاص(مثلا کلیک شدن یه دکمه) بالون بیاد باید با استفاده از گرفتن اطلاعات همین ساختار و فراخوانی Shell_NotifyIcon با مقدار NIM_MODIFY بالون رو نشون بدین.

cpplover
04-01-2008, 15:19
سلام دوست من :

باید قبل از هر چیز به شما تبریک بگم واسه مهارتی که در نوشتن اینطور برنامه ها که

واقعا یه آرزو برای من هست ، دارید. با تشکر و اینکه باید بگم اون برنامه همونطوری

که من میخواستم اجرا شد و حتی چند منوی دیگه روایجاد واسه آزمایش ایجاد کردم و خیلی

عالی جواب گرفتم.

در ضمن از بابت ایجاد دو تایپیک با یک عنوان معذرت خواهی میکنم و از انجام این کار در آینده صرف نظر میکنم.

اما خوب متاسفانه و یا شاید خوشبختانه باید بگم سوالای من یه مقدار زیادن!!!

از اینکه زیاد میپرسم باید منو ببخشید.


در ادامه من میخوام در مورد ایجاد بالن (مثل بالن های به قول شما windows update یا نرم افزارهایی
مثل jetaudio و ...) بپرسم و از همون نوعی که خدتون اشاره کردید یعنی فرضا با ایجاد یک رویداد مثل
فشردن یک دکمه با لون رو ایجاد کرد ؟ البته من با جستجو فقط کد برنامه هایی مثل VB رو پیدا کردم و واسه یک
سری اکتیوایکس هم در codeproject جستجو کردم اما در هر حال موفق نشدم .
ممکنه لطفی کنید و در مورد Shell_NotifyIcon و NIM_MODIFY توضیح بدید ؟

cpplover
04-01-2008, 23:15
ممکنه واسه بالون راهنمایی بیشتری بدید؟ ممنون میشم

m3hrz4d
04-01-2008, 23:20
شما یک عضو کلاس دیالوگ برای ساختار NotifyIcon بگیرین :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و توی OnInitDialog , آیکن رو بدون دادن مشخصات بالون درست کنین:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا فرض میکنیم 2 تا دکمه برای Show و Hide کردن میخواهیم داشته باشیم. توی کلاس نمونه اولیه رو وارد میکنیم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و توی MESSAGE_MAP هم :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که قسمت های Bold شده طبق معمول آیدی دکمه ها هستن.
حالا پیاده سازیشون میکنیم :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته قسمت نوشتن نمونه اولیه و MESSAGE_MAP رو معمولا خود Visual Studio با کلیک کردن روی دکمه هایی که ساختیم انجام میده.
توی OnDestroy هم میتونیم Icon رو حذف کنیم تا بعد از اتمام برنامه از SysTray خارج بشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

همونطور که میبینین تا دادن مقدار خالی به متن Balloon اون رو Hide کردیم.البته روش دیگه هم واسه این کار باید باشه..

cpplover
05-01-2008, 10:49
با سلام

چند تا اشکال در کدهای قبلی بود که من متاسفانه نتونستم اونا رو برطرف کنم :
1) error C2065: 'WM_SYSTRAYICON' : undeclared identifier
2)و در خطوط زیر هم این اشکالها موجود بودن:




void CBalloonDlg::OnBtnShowBalloonClicked()
{
m_SysTrayIcon.uFlags = NIF_INFO;
strcpy(m_SysTrayIcon.szInfo, _T("Text"));
strcpy(m_SysTrayIcon.szInfoTitle, _T("Title"));
Shell_NotifyIcon(NIM_MODIFY,&m_SysTrayIcon);
}

void CBalloonDlg::OnBtnHideBalloonClicked()
{
m_SysTrayIcon.uFlags = NIF_INFO;
strcpy(m_SysTrayIcon.szInfo, _T(""));
strcpy(m_SysTrayIcon.szInfoTitle, _T(""));
Shell_NotifyIcon(NIM_MODIFY,&m_SysTrayIcon);
}


1) error C2065: 'NIF_INFO' : undeclared identifier
2) error C2039: 'szInfo' : is not a member of '_NOTIFYICONDATAA'
3) error C2039: 'szInfoTitle' : is not a member of '_NOTIFYICONDATAA'
4) error C2039: 'szInfo' : is not a member of '_NOTIFYICONDATAA'
5) error C2039: 'szInfoTitle' : is not a member of '_NOTIFYICONDATAA'

m3hrz4d
06-01-2008, 00:20
WM_SYSTRAYICON رو شما باید توی فایل CPP بالای همه تعریفش میکردین! بدون اینکه این کار کنه شما چطوری از منو ها جواب گرفتین؟؟!
-
برای رفع مشکل های بعدی هم اگه شما از Visual Studio 98 استفاده میکنین Library ش قدیمیه و این اعضا برای این Structure تعریف نشدن! اگه هم از ورژن 2003 به بعد استفاده میکنین و همچین Error ی داره, توی فایل stdafx.h که توی پروژه تون ساخته شده یه جایی شبیه این هست :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
عددی که Bold ش کردم ممکنه برای شما کمتر باشه. اون رو به همین 500 تغییر بدین.

cpplover
06-01-2008, 21:02
دوست من باز هم باید از زحمات شما تشکر کنم
چون به همون دلیلی که گفتید برنامه های من در مورد ایجاد بالون کار نمی کردند
من از ویژال 2005 استفاده کردم و بالون ها به خوبی نمایش داده شدند
ممنونم

cpplover
06-03-2008, 19:24
سلام





این تایپیک رو بعد از تقریبا دو ماه فعالش کردم تا از دوستانی که در اون زمان به من لطف کردن و کمک دادن یه سوال بپرسم و اون اینکه :


1) چرا با وجود متد OnDestroy() آیکن از try بعد از خروج از برنامه خارج نمیشه ؟
2) چرا منو با کلیک در نقاطی خارج از آن از بین نمی روند ؟

ممنون میشم راهنمایی بدید.

cpplover
07-03-2008, 18:20
دوستان لطفا یکی راهنمایی بده :46:

کسی نبود؟؟؟؟؟؟؟؟؟؟؟؟

:33:

اگه دوستان و مدیر بخش می بینند لطفا بی جواب نگذارند:36:

ممنون:11:

cpplover
10-03-2008, 18:56
هرکی به این بحث علاقه داره پاسخ رو در لینک زیر ببینه :
به بچه های barnamenevis.org خسته نباشید میگم .


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]