با عرض سلام خدمت به اعزای این تالار گفتگو :کسی هست که بتونه به این سوال پاسخ بده؟ ممنون میشم اگه جواب بدیدایجاد بالون (روی ایکن try )
visual c ++
ممنون میشم اگه کسی بتونه کمک کنه
با تشکر
با عرض سلام خدمت به اعزای این تالار گفتگو :کسی هست که بتونه به این سوال پاسخ بده؟ ممنون میشم اگه جواب بدیدایجاد بالون (روی ایکن try )
visual c ++
ممنون میشم اگه کسی بتونه کمک کنه
با تشکر
سلام.
دوست عزیز از ایجاد چند %Dice:1Man:"ssdp:discover"MX:3D8
سلام دوست گرامیخسته نباشیدمتاسفانه برنامه واسه من سرتاسر از eror بود
اولا m_nid دقیقا چیه؟ احتمالا باید توسط یک struct تعریف بشه ؟ مگه نه ؟
واون struct چیه ؟
من فقط حدس زدم که شاید نیاز به struct ، NOTIFYICONDATAباشه اما اینطور نبود
ضمنا اگه ممکنه در مورد برنامه های دیالوگ بگین کد باید کجا کپی شه ؟
بعد هم در این برنامه ها میشه لطف کنید بگید این کد های بزرگ رو
چطور میشه یاد گرفت ؟ مثلا علامت ::=
و یا _T یعنی چی ؟ ممنون میشم .
خطاها :
'm_nid' : undeclared identifiererror C2228: left of '.cbSize' must have class/struct/union typeerror C2228: left of '.uFlags' must have class/struct/union type
و خطاهای مشابه
ضمنا منظوذتون از %Dice:1Man:"ssdp:discover"MX:3D8 چی بود؟
با تشکر
آخر منو میخوایین ایجاد کنین یا بالون ؟ (منظورتون از بالون مثل اینی هست که برای 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 بالون رو نشون بدین.
Last edited by m3hrz4d; 04-01-2008 at 00:45.
سلام دوست من :باید قبل از هر چیز به شما تبریک بگم واسه مهارتی که در نوشتن اینطور برنامه ها کهواقعا یه آرزو برای من هست ، دارید. با تشکر و اینکه باید بگم اون برنامه همونطوریکه من میخواستم اجرا شد و حتی چند منوی دیگه روایجاد واسه آزمایش ایجاد کردم و خیلیعالی جواب گرفتم.در ضمن از بابت ایجاد دو تایپیک با یک عنوان معذرت خواهی میکنم و از انجام این کار در آینده صرف نظر میکنم.اما خوب متاسفانه و یا شاید خوشبختانه باید بگم سوالای من یه مقدار زیادن!!!از اینکه زیاد میپرسم باید منو ببخشید.در ادامه من میخوام در مورد ایجاد بالن (مثل بالن های به قول شما windows update یا نرم افزارهایی
مثل jetaudio و ...) بپرسم و از همون نوعی که خدتون اشاره کردید یعنی فرضا با ایجاد یک رویداد مثل
فشردن یک دکمه با لون رو ایجاد کرد ؟ البته من با جستجو فقط کد برنامه هایی مثل VB رو پیدا کردم و واسه یک
سری اکتیوایکس هم در codeproject جستجو کردم اما در هر حال موفق نشدم .
ممکنه لطفی کنید و در مورد Shell_NotifyIcon و NIM_MODIFY توضیح بدید ؟
ممکنه واسه بالون راهنمایی بیشتری بدید؟ ممنون میشم
شما یک عضو کلاس دیالوگ برای ساختار NotifyIcon بگیرین :
و توی OnInitDialog , آیکن رو بدون دادن مشخصات بالون درست کنین:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا فرض میکنیم 2 تا دکمه برای Show و Hide کردن میخواهیم داشته باشیم. توی کلاس نمونه اولیه رو وارد میکنیم:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و توی MESSAGE_MAP هم :کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که قسمت های Bold شده طبق معمول آیدی دکمه ها هستن.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا پیاده سازیشون میکنیم :
البته قسمت نوشتن نمونه اولیه و MESSAGE_MAP رو معمولا خود Visual Studio با کلیک کردن روی دکمه هایی که ساختیم انجام میده.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توی OnDestroy هم میتونیم Icon رو حذف کنیم تا بعد از اتمام برنامه از SysTray خارج بشه:
همونطور که میبینین تا دادن مقدار خالی به متن Balloon اون رو Hide کردیم.البته روش دیگه هم واسه این کار باید باشه..کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با سلام
چند تا اشکال در کدهای قبلی بود که من متاسفانه نتونستم اونا رو برطرف کنم :
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'
WM_SYSTRAYICON رو شما باید توی فایل CPP بالای همه تعریفش میکردین! بدون اینکه این کار کنه شما چطوری از منو ها جواب گرفتین؟؟!
-
برای رفع مشکل های بعدی هم اگه شما از Visual Studio 98 استفاده میکنین Library ش قدیمیه و این اعضا برای این Structure تعریف نشدن! اگه هم از ورژن 2003 به بعد استفاده میکنین و همچین Error ی داره, توی فایل stdafx.h که توی پروژه تون ساخته شده یه جایی شبیه این هست :
عددی که Bold ش کردم ممکنه برای شما کمتر باشه. اون رو به همین 500 تغییر بدین.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دوست من باز هم باید از زحمات شما تشکر کنم
چون به همون دلیلی که گفتید برنامه های من در مورد ایجاد بالون کار نمی کردند
من از ویژال 2005 استفاده کردم و بالون ها به خوبی نمایش داده شدند
ممنونم
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)