نمايش Menu روی Tray Icon
قرار بود نمايش 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
منوی مورد نظر هستش.
بازگشت به فهرست
بازگشت به صفحه نخست