( تعداد نمایش : 590 )

نمایش Menu روی Tray Icon

قرار بود نمایش Menu روی Tray Icon رو بگم.

کار ساده تر از این حرفاست.

توی کلاس دیالوگتون بصورت public  تابع زیر رو اضافه کنید :

virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);

این برا اینه که message ها رو handle کنیم (دیگه چون یکم عکس گذاشتن سختم بود دستی میگم انجام بدید که عکس نخواد 05  نمايش Menu روی Tray Icon)

حالا  تابع زیر رو توی کد اصلی بنویسید که قراره menu رو اینجا نمایش بدیم :

LRESULT اسم کلاس برنامه تونDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{

return CDialog::WindowProc(message, wParam, lParam);
}

حالا باید یه menu ساخته باشید و با استفاده از ID اون و چند خط کد زیر می تونید menu رو نمایش بدید (اینجا من از پیغام کلیک راست روی آیکون استفاده کردم) :

CMenu mymenu,*pmenu;
if (message == myicon.uCallbackMessage)
{
if(lParam==WM_RBUTTONDOWN)
{
mymenu.LoadMenu(IDR_MENU1);
pmenu=mymenu.GetSubMenu(0);
CPoint pos;
#ifdef _WIN32_WCE
pos = CPoint(GetMessagePos());
#else
GetCursorPos(&pos);
#endif
::TrackPopupMenu(pmenu->m_hMenu, TPM_TOPALIGN, pos.x, pos.y, 0,
this->GetSafeHwnd(), NULL);
mymenu.DestroyMenu();
pmenu->DestroyMenu();
}

**اما myicon.uCallbackMessage چیه ؟!

اگه یادتون باشه برای ایجاد tray icon یه شی با  اسم myicon ساخته بودیم همونه 03  نمايش Menu روی Tray Icon که uCallbackMessage رو توش ست کرده بودیم.

**IDR_MENU1 هم ID منوی مورد نظر هستش.

دیدگاه خود را بیان کنید.

باید وارد سایت شده باشید برای دیدگاه دادن