virtual INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_TIMER: if (WaitForSingleObject(m_hFileNotify, 0) == WAIT_OBJECT_0) { m_profileList.DeleteAllItems(); ProfileEnumData ped(m_profileList, m_pd->ptszProfile); findProfiles(m_pd->ptszProfileDir, EnumProfilesForList, (LPARAM)&ped); FindNextChangeNotification(m_hFileNotify); } break; case WM_FOCUSTEXTBOX: SetFocus(m_profileList.GetHwnd()); if (m_pd->ptszProfile[0] == 0 || m_profileList.GetSelectedCount() == 0) m_profileList.SetItemState(0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); break; case WM_SHOWWINDOW: if (wParam) CheckRun(); break; case WM_CONTEXTMENU: ExecuteMenu(lParam); break; } return CDlgBase::DlgProc(msg, wParam, lParam); }
LRESULT CALLBACK HookWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { NOTIFYICONDATA nid; int i; char buff[255]; // DWORD ProcessId; HMENU hSysMenu; switch (msg) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDM_RESTORE: ShowTheWindow(CurrentWindow); break; case IDM_EXIT: SendMessage(hwndHook,WM_DESTROY,0,0); break; case IDM_CLOSE: CloseTheWindow(CurrentWindow); break; case IDM_ABOUT: DialogBox(thisInstance, MAKEINTRESOURCE(IDD_DIALOG1), hwndHook, (DLGPROC)AboutDlgProc ); break; case IDM_DESTROY: if(MessageBox(NULL,"Kill the window?","RBTray",MB_YESNO | MB_ICONWARNING )==IDYES)DestroyTheWindow(CurrentWindow); break; case IDM_SHOWKEY: showKeyb = !showKeyb; keyState = -1; SetKbdCfg(showKeyb); ShowKeyState(); break; }; break; case WM_MYCMD: switch (wParam) { /* case IDM_LOTUSEDIT: buff[0] = '\0'; GetWindowText((HWND)lParam, buff, 10); //buff[250] = '\0'; MessageBox(NULL,buff,"code",MB_OK); break; */ case IDM_SIZE: Resize((HWND)lParam); break; case IDM_TRAY: // prohibit hiding of explorer's taskbar GetClassName((HWND)lParam, buff, 255); if(strcasecmp("Shell_TrayWnd", buff) == 0) break; if(strcasecmp("DV2ControlHost", buff) == 0) break; //MessageBox(NULL, buff, "RBTray", MB_OK); for(i = 0 ; i < MAXCOUNT ;i++) { if(!list[i]) break; } if (i == MAXCOUNT) break; list[i]=(HWND)lParam; ShowWindow((HWND)lParam, SW_HIDE); ShowWindow((HWND)lParam, SW_MINIMIZE); AddToTray(i); ShowWindow((HWND)lParam, SW_HIDE); ShowWindow(GetParent((HWND)lParam), SW_HIDE); UpdMenu((HWND)lParam,(LPARAM)TRUE); break; /* case IDM_KEY: // Fix chars typed in incorrect keyboard layout FixChars(); break; */ case IDM_KEYSTAT: ShowKeyState(); break; case IDM_ONTOP: hSysMenu=GetSystemMenu((HWND)lParam, FALSE); if(hSysMenu) { if(GetMenuState(hSysMenu, IDM_ONTOP,MF_BYCOMMAND) & MF_CHECKED) //GetWindowLong((HWND)lParam,GWL_EXSTYLE)&WS_EX_TOPMOST) { CheckMenuItem(hSysMenu,IDM_ONTOP,MF_BYCOMMAND |MF_UNCHECKED); SetWindowPos((HWND)lParam,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOREDRAW); } else { CheckMenuItem(hSysMenu,IDM_ONTOP,MF_BYCOMMAND |MF_CHECKED); SetWindowPos((HWND)lParam,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOREDRAW); } } break; } case WM_DELTRAY: CloseTheWindow((HWND)wParam); break; case WM_TRAYCMD: switch ((UINT)lParam) { case WM_LBUTTONDOWN: // Hmm, there's probably a better way to do this... SetCapture maybe? // But I don't feel like messing with it :) lastLButtonDown = GetTickCount(); break; case WM_LBUTTONUP: if ((GetTickCount() - lastLButtonDown) <= 1000) { ShowTheWindow((HWND)wParam); } break; case WM_RBUTTONUP: CurrentWindow=(HWND)wParam; ExecuteMenu(); break; case WM_MOUSEMOVE: if (!IsWindow((HWND)wParam)) DelFromTray(FindInTray((HWND)wParam)); else { nid.uID = (UINT)wParam; nid.uFlags = NIF_ICON | NIF_TIP; nid.hIcon = GetWindowIcon((HWND)wParam); GetWindowText((HWND)wParam, nid.szTip, MAXTEXT); Shell_NotifyIcon(NIM_MODIFY, &nid); } } break; case WM_DESTROY: for (i = 0; i < MAXCOUNT; i++) if (list[i]) { ShowIt(list[i]); DelFromTray(i); } showKeyb = FALSE; ShowKeyState(); UnRegisterHook(); FreeLibrary(hLib); EnumWindows((WNDENUMPROC)UpdMenu,FALSE); PostQuitMessage(0); ExitProcess(0); break; } // I can't put this in the switch since WM_TASKBAR_CREATED isn't constant if (msg == WM_TASKBAR_CREATED) { for (i = 0; i < MAXCOUNT; i++) { if (list[i]) { AddToTray(i); } } } return DefWindowProc(hwnd, msg, wParam, lParam); }
LRESULT CALLBACK HookWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDM_RESTORE: RestoreWindowFromTray(_hwndForMenu); break; case IDM_CLOSE: CloseWindowFromTray(_hwndForMenu); break; case IDM_ABOUT: DialogBox(_hInstance, MAKEINTRESOURCE(IDD_ABOUT), _hwndHook, (DLGPROC)AboutDlgProc); break; case IDM_EXIT: SendMessage(_hwndHook, WM_DESTROY, 0, 0); break; } break; case WM_ADDTRAY: MinimizeWindowToTray((HWND)lParam); break; case WM_REMTRAY: RestoreWindowFromTray((HWND)lParam); break; case WM_REFRTRAY: RefreshWindowInTray((HWND)lParam); break; case WM_TRAYCMD: switch ((UINT)lParam) { case NIN_SELECT: RestoreWindowFromTray(_hwndItems[wParam]); break; case WM_CONTEXTMENU: _hwndForMenu = _hwndItems[wParam]; ExecuteMenu(); break; case WM_MOUSEMOVE: RefreshWindowInTray(_hwndItems[wParam]); break; } break; case WM_DESTROY: for (int i = 0; i < MAXTRAYITEMS; i++) { if (_hwndItems[i]) { RestoreWindowFromTray(_hwndItems[i]); } } UnRegisterHook(); FreeLibrary(_hLib); PostQuitMessage(0); break; } if (msg == WM_TASKBAR_CREATED) { for (int i = 0; i < MAXTRAYITEMS; i++) { if (_hwndItems[i]) { AddToTray(i); } } } return DefWindowProc(hwnd, msg, wParam, lParam); }