• توجه: در صورتی که از کاربران قدیمی ایران انجمن هستید و امکان ورود به سایت را ندارید، میتوانید با آیدی altin_admin@ در تلگرام تماس حاصل نمایید.

نمايش Menu روی Tray Icon

Reza

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