رار بود نمايش 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 منوی مورد نظر هستش.
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 منوی مورد نظر هستش.