قرار بود نمایش Menu روی Tray Icon رو بگم.
کار ساده تر از این حرفاست.
توی کلاس دیالوگتون بصورت public تابع زیر رو اضافه کنید :
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
این برا اینه که message ها رو handle کنیم (دیگه چون یکم عکس گذاشتن سختم بود دستی میگم انجام بدید که عکس نخواد
)
حالا تابع زیر رو توی کد اصلی بنویسید که قراره 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 ساخته بودیم همونه
که uCallbackMessage رو توش ست کرده بودیم.
**IDR_MENU1 هم ID منوی مورد نظر هستش.
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن