INT_PTR TTBInternalStatusMenuButt(WPARAM, LPARAM) { POINT pt; GetCursorPos(&pt); TrackPopupMenu(Menu_GetStatusMenu(), TPM_TOPALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, 0, pcli->hwndContactList, NULL); return 0; }
INT_PTR cli_TrayIconProcessMessage(WPARAM wParam, LPARAM lParam) { MSG *msg = (MSG*)wParam; switch (msg->message) { case WM_EXITMENULOOP: if (pcli->bTrayMenuOnScreen) pcli->bTrayMenuOnScreen = FALSE; break; case TIM_CALLBACK: if ((GetAsyncKeyState(VK_CONTROL) & 0x8000) && msg->lParam == WM_LBUTTONDOWN && !db_get_b(NULL, "CList", "Tray1Click", SETTING_TRAY1CLICK_DEFAULT)) { POINT pt; HMENU hMenu = Menu_GetStatusMenu(); g_mutex_bOnTrayRightClick = 1; IS_WM_MOUSE_DOWN_IN_TRAY = 1; SetForegroundWindow(msg->hwnd); SetFocus(msg->hwnd); GetCursorPos(&pt); pcli->bTrayMenuOnScreen = TRUE; TrackPopupMenu(hMenu, TPM_TOPALIGN | TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, msg->hwnd, NULL); PostMessage(msg->hwnd, WM_NULL, 0, 0); g_mutex_bOnTrayRightClick = 0; IS_WM_MOUSE_DOWN_IN_TRAY = 0; } else if (msg->lParam == WM_MBUTTONDOWN || msg->lParam == WM_LBUTTONDOWN || msg->lParam == WM_RBUTTONDOWN) { IS_WM_MOUSE_DOWN_IN_TRAY = 1; } else break; *((LRESULT*)lParam) = 0; return TRUE; case WM_ACTIVATE: SetCursor(LoadCursor(NULL, IDC_ARROW)); { HWND h1 = (HWND)msg->lParam; HWND h2 = h1 ? GetParent(h1) : NULL; if (db_get_b(NULL, "CList", "AutoHide", SETTING_AUTOHIDE_DEFAULT)) { if (LOWORD(msg->wParam) == WA_INACTIVE && h2 != pcli->hwndContactList) autoHideTimerId = CLUI_SafeSetTimer(NULL, 0, 1000 * db_get_w(NULL, "CList", "HideTime", SETTING_HIDETIME_DEFAULT), TrayIconAutoHideTimer); else { KillTimer(NULL, autoHideTimerId); autoHideTimerId = 0; } } else if (autoHideTimerId) { KillTimer(NULL, autoHideTimerId); autoHideTimerId = 0; } } return FALSE; //to avoid autohideTimer in core } return corecli.pfnTrayIconProcessMessage(wParam, lParam); }
static INT_PTR GroupMenu_OnAddService(WPARAM wParam, LPARAM lParam) { MENUITEMINFO *mii = (MENUITEMINFO*)wParam; if (mii == NULL) return 0; if (hGroupMainMenuItemProxy == (HANDLE)lParam) { mii->fMask |= MIIM_SUBMENU; mii->hSubMenu = Menu_GetMainMenu(); } if (hGroupStatusMenuItemProxy == (HANDLE)lParam) { mii->fMask |= MIIM_SUBMENU; mii->hSubMenu = Menu_GetStatusMenu(); } return TRUE; }
static INT_PTR TrayMenuOnAddService(WPARAM wParam, LPARAM lParam) { MENUITEMINFO *mii = (MENUITEMINFO*)wParam; if (mii == NULL) return 0; if (hTrayMainMenuItemProxy == (HGENMENU)lParam) { mii->fMask |= MIIM_SUBMENU; mii->hSubMenu = hMainMenu; } if (hTrayStatusMenuItemProxy == (HGENMENU)lParam) { mii->fMask |= MIIM_SUBMENU; mii->hSubMenu = hStatusMenu = Menu_GetStatusMenu(); } return TRUE; }