// Window Procedure LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { HANDLE_MSG (hWnd, WM_CREATE, OnCreate ); HANDLE_MSG (hWnd, WM_DESTROY, OnDestroy ); HANDLE_MSG (hWnd, WM_PAINT, OnPaint ); case WM_COPYDATA: return OnCopyData( hWnd, (HWND)wParam, (PCOPYDATASTRUCT)lParam ); default: if( msg == WM_SKYPECONTROL_ATTACH){ if(lParam == 0){ hSkypeWnd = (HWND)wParam; } jclass clazz = envWndProc->GetObjectClass(*objWndProc); if( clazz == NULL ){ printf("cannot find class\n"); } jmethodID methodid = envWndProc->GetMethodID( clazz, "jni_onAttach", "(I)V"); if( methodid == NULL ){ printf("cannot find methodid\n"); } envWndProc->CallIntMethod(*objWndProc, methodid, (int)lParam ); } break; } return DefWindowProc(hWnd, msg, wParam, lParam); }
//消息循环 LRESULT CMainDlg::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = 0; BOOL bHandled = TRUE; switch( uMsg ) { case WM_CREATE: lRes = OnCreate(uMsg, wParam, lParam, bHandled); break; case WM_CLOSE: lRes = OnClose(uMsg, wParam, lParam, bHandled); break; case WM_DESTROY: lRes = OnDestroy(uMsg, wParam, lParam, bHandled); break; case WM_NCACTIVATE: lRes = OnNcActivate(uMsg, wParam, lParam, bHandled); break; case WM_NCCALCSIZE: lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled); break; case WM_NCPAINT: lRes = OnNcPaint(uMsg, wParam, lParam, bHandled); break; case WM_NCHITTEST: lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled); break; case WM_SIZE: lRes = OnSize(uMsg, wParam, lParam, bHandled); break; case WM_GETMINMAXINFO: lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled); break; case WM_SYSCOMMAND: lRes = OnSysCommand(uMsg, wParam, lParam, bHandled); break; case WM_COPYDATA: lRes = OnCopyData(uMsg, wParam, lParam, bHandled); break; case WM_USER_PROG: lRes = OnUserProg(uMsg, wParam, lParam, bHandled); break; case WM_USER_TEXTPRINT:lRes = OnUserPrint(uMsg, wParam, lParam, bHandled); break; case WM_USER_DELETE_ITEM: lRes = OnUserCloseListItem(uMsg, wParam, lParam, bHandled); break; default: bHandled = FALSE; } if( bHandled ) return lRes; if( m_pm.MessageHandler(uMsg, wParam, lParam, lRes) ) return lRes; return CWindowWnd::HandleMessage(uMsg, wParam, lParam); }
/*------------------------------------------- window procedure ---------------------------------------------*/ LRESULT CALLBACK WndProcPlayer(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_CREATE: OnCreate(hwnd); return 0; case WM_DESTROY: OnDestroy(hwnd); return 0; case WM_TIMER: switch(wParam) { case IDTIMER_PLAYER: OnTimerPlayer(hwnd); break; } return 0; // show dialog box case PLAYERM_SHOWDLG: OnShowDialog(hwnd); return 0; // add item to tcmenu*.txt case PLAYERM_REQUESTMENU: OnRequestMenu(hwnd, FALSE); return 0; case PLAYERM_STOP: StopPlayer(hwnd); PostMessage(hwnd, WM_CLOSE, 0, 0); return 0; case PLAYERM_PAUSE: PausePlayer(hwnd); return 0; case PLAYERM_NEXT: PrevNextPlayer(hwnd, TRUE); return 0; case PLAYERM_PREV: PrevNextPlayer(hwnd, FALSE); return 0; case MM_MCINOTIFY: OnMCINotifyPlayer(hwnd, wParam, (LONG)lParam); return 0; case WM_COPYDATA: OnCopyData(hwnd, (HWND)wParam, (COPYDATASTRUCT*)lParam); return 0; } return DefWindowProc(hwnd, message, wParam, lParam); }
LRESULT CPdnWnd::WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if(uMsg == WM_FORWARDMSG) { return OnForwardMessage(hWnd, uMsg, wParam, lParam); } else if(uMsg == WM_CREATE) { m_hWnd = hWnd; return OnCreate(uMsg, wParam, lParam); } else if(uMsg == WM_CLOSE) { return OnClose(uMsg, wParam, lParam); } else if(uMsg == WM_DESTROY) { return OnDestroy(uMsg, wParam, lParam); } else if(uMsg == WM_JSINVOKE) { return OnJSInvoke(uMsg, wParam, lParam); } else if(uMsg == WM_GETMINMAXINFO) { return OnGetMinMaxInfo(uMsg, wParam, lParam); } else if(uMsg == WM_ACTIVATE) { return OnActivate(uMsg, wParam, lParam); } else if(uMsg == WM_SIZE) { return OnSize(uMsg, wParam, lParam); } else if(uMsg == WM_COMMAND) { return OnCommand(uMsg, wParam, lParam); } else if(uMsg == WM_ENDSESSION) { return OnEndSession(uMsg, wParam, lParam); } else if(uMsg == WM_NCDESTROY) { OnFinalMessage(m_hWnd, uMsg, wParam, lParam); return ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); } else if(uMsg == m_TaskbarRestartMessage) { return OnTaskbarRestart(uMsg, wParam, lParam); } else if(uMsg == WM_COPYDATA) { return OnCopyData(uMsg, wParam, lParam); } else if(uMsg == WM_NOTIFYICON) { return OnNotifyIcon(uMsg, wParam, lParam); } else if(uMsg == WM_PARENTNOTIFY && wParam == WM_DESTROY) { return ::DestroyWindow(m_hWnd); } else if(uMsg == WM_SYSCOMMAND) { return OnSysCommand(uMsg, wParam, lParam); } else if(uMsg == 0x02B1 /*WM_WTSSESSION_CHANGE*/) { return OnWTSSessionChange(uMsg, wParam, lParam); } else if(uMsg == WM_ENTERMENULOOP) { m_hasModalDialog = true; return ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); } else if(uMsg == WM_EXITMENULOOP) { m_hasModalDialog = false; return ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); } else { return ::DefWindowProc(m_hWnd, uMsg, wParam, lParam); } }
// // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) // // PURPOSE: Processes messages for the main window. // // WM_COMMAND - process the application menu // WM_PAINT - Paint the main window // WM_DESTROY - post a quit message and return // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_CREATE: //appendText(txtbox, TEXT("test\r\n")); break; case WM_COPYDATA: return (OnCopyData((COPYDATASTRUCT *) lParam)); break; case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case ID_FILE_STARTHOOK: StartMessageHook(); break; case ID_FILE_STOPHOOK: StopMessageHook(); break; case ID_TESTMSGS_WM: SendWmSettext(); break; case ID_TESTMSGS_WMCOM: SendWmCommand(); break; case ID_PROC64TEST: if (_tcscmp(targetProcessId, _T("")) != 0) //if target pid was used { TCHAR tmp[500]; TCHAR *stopStr; targetPid = (DWORD)_tcstol(targetProcessId, &stopStr, 10); BOOL current64bit = IsCurrentProcess64Bit(); if (IsProcess64Bit(targetPid) && current64bit) _stprintf_s(tmp, _T("Target pid (%ld) is a matching 64 bit process\r\n"), targetPid); else if(!IsProcess64Bit(targetPid) && !current64bit) _stprintf_s(tmp, _T("Target pid (%ld) is a matching 32 bit process\r\n"), targetPid); else if (IsProcess64Bit(targetPid)) _stprintf_s(tmp, _T("Target pid (%ld) is 64 bit process\r\n"), targetPid); else _stprintf_s(tmp, _T("Target pid (%ld) is 32 bit process\r\n"), targetPid); AppendText(txtbox, tmp); //ExtractResource(IDR_SETMH32, _T("SetMsgHook32.exe")); //_stprintf_s(tmp, _T(" %s %ld %d"), dll32bitName, (long)mainHwnd, targetPid); //RunResource(IDR_SETMH32, tmp); //MessageBox(0, , _T("64 bit Test"), 0); } break; case ID_FILE_SETTINGS: DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DlgProc); break; case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, DlgProc); break; case ID_FILE_CLEAR: SetWindowText(txtbox, _T("")); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_HOTKEY: HotKeyPressed(wParam); break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: Add any drawing code here... EndPaint(hWnd, &ps); break; case WM_SIZE: { //resize the txtbox when the parent window size changes int nWidth = LOWORD(lParam); int nHeight = HIWORD(lParam); SetWindowPos(txtbox, HWND_NOTOPMOST, txtboxSpacing, txtboxSpacing, nWidth-(txtboxSpacing*2), nHeight-(txtboxSpacing*2), SWP_NOZORDER|SWP_NOMOVE); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
LRESULT MainDialog::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { //禁用双击标题栏最大化 if (WM_NCLBUTTONDBLCLK == uMsg) { return 0; } else if (WM_HOTKEY == uMsg) { OnHotkey(wParam, lParam); return 0; } else if (WM_TRAYICON_NOTIFY == uMsg) { OnTrayIconNotify(wParam, lParam); return 0; } else if (WM_MENU_NOTIFY == uMsg) { LPCTSTR pName = (LPCTSTR)wParam; LPCTSTR pSid = (LPCTSTR)lParam; if (pName) { //LOG__(APP, _T("WM_MENU_NOTIFY:%s"),pName); OnMenuClicked(CString(pName), CString(pSid)); } return 0; } else if (WM_TIMER == uMsg) { if (wParam == TIMER_TRAYEMOT) { static BOOL bTrans = FALSE; if (bTrans) { bTrans = FALSE; SetTrayIconIndex(ICON_TRAY_LOGO); } else { bTrans = TRUE; SetTrayIconIndex(-1); } } } else if (WM_ENDSESSION == uMsg) { BOOL bEnding = wParam; if (!bEnding) return 0; module::getMiscModule()->quitTheApplication(); LOG__(APP, _T("MainDialog: WM_ENDSESSION System End Session OK")); } else if (WM_COPYDATA == uMsg) { COPYDATASTRUCT *pCopyData = (COPYDATASTRUCT*)lParam; OnCopyData(pCopyData); } return WindowImplBase::HandleMessage(uMsg, wParam, lParam); }
/*------------------------------------------------ subclass procedure of the clock --------------------------------------------------*/ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) // for tooltip { case WM_MOUSEMOVE: case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_MBUTTONDOWN: case WM_LBUTTONUP: case WM_RBUTTONUP: case WM_MBUTTONUP: #if TC_ENABLE_WHEEL case WM_MOUSEWHEEL: #endif OnTooltipMouseMsg(hwnd, message, wParam, lParam); break; } switch(message) { /* -------- drawing & sizing ------------- */ case WM_PAINT: { PAINTSTRUCT ps; HDC hdc; if(g_bNoClock) break; hdc = BeginPaint(hwnd, &ps); OnPaint(hwnd, hdc, NULL); EndPaint(hwnd, &ps); return 0; } case WM_ERASEBKGND: break; case (WM_USER+100): // a message requesting for clock size if(g_bNoClock) break; // sent from parent window return OnCalcRect(hwnd); case WM_WINDOWPOSCHANGING: // size arrangement if(g_bNoClock) break; OnWindowPosChanging(hwnd, (LPWINDOWPOS)lParam); break; case WM_SIZE: if(g_bNoClock) break; CreateClockDC(hwnd); // create offscreen DC return 0; case WM_SYSCOLORCHANGE: case WM_THEMECHANGED: if(g_bNoClock) break; CreateClockDC(hwnd); // create offscreen DC InvalidateRect(hwnd, NULL, FALSE); #if TC_ENABLE_DESKTOPICON SetDesktopIcons(); // desktop.c #endif return 0; case WM_WININICHANGE: case WM_TIMECHANGE: case (WM_USER+101): case WM_SETFOCUS: case WM_KILLFOCUS: if(g_bNoClock) break; InvalidateRect(hwnd, NULL, FALSE); return 0; /* -------- Timers ------------- */ case WM_TIMER: switch (wParam) { case IDTIMER_MAIN: OnTimerMain(hwnd); return 0; #if TC_ENABLE_SYSINFO case IDTIMER_SYSINFO: OnTimerSysInfo(); // sysinfo.c #if TC_ENABLE_DESKTOPICON SetDesktopIcons(); // desktop.c #endif return 0; #endif } if(g_bNoClock) break; return 0; /* -------- Mouse messages ------------- */ case WM_LBUTTONDOWN: // mouse button is down case WM_RBUTTONDOWN: case WM_MBUTTONDOWN: case WM_XBUTTONDOWN: return OnMouseDown(hwnd, message, wParam, lParam); case WM_LBUTTONUP: // mouse button is up case WM_RBUTTONUP: case WM_MBUTTONUP: case WM_XBUTTONUP: return OnMouseUp(hwnd, message, wParam, lParam); case WM_MOUSEMOVE: return 0; case WM_NCRBUTTONUP: return 0; case WM_CONTEXTMENU: PostMessage(g_hwndTClockMain, WM_CONTEXTMENU, wParam, lParam); return 0; case WM_NCHITTEST: // not to pass to g_oldWndProc return DefWindowProc(hwnd, message, wParam, lParam); case WM_MOUSEACTIVATE: return MA_ACTIVATE; #if TC_ENABLE_MOUSEDROP case WM_DROPFILES: // files are dropped PostMessage(g_hwndTClockMain, WM_DROPFILES, wParam, lParam); return 0; #endif #if TC_ENABLE_WHEEL case WM_MOUSEWHEEL: // the mouse wheel is rotated PostMessage(g_hwndTClockMain, WM_MOUSEWHEEL, wParam, lParam); return 0; #endif case WM_NOTIFY: // tooltip { LRESULT res; if(OnTooltipNotify(hwnd, &res, (LPNMHDR)lParam)) return res; break; } /* messages sent from other program */ case CLOCKM_EXIT: // clean up all EndClock(hwnd); return 0; case CLOCKM_REFRESHCLOCK: // refresh the clock OnRefreshClock(hwnd); return 0; case CLOCKM_DELUSRSTR: // clear user strings InitUserStr(); return 0; #if TC_ENABLE_TASKBAR case CLOCKM_REFRESHTASKBAR: // refresh other elements than clock OnRefreshTaskbar(hwnd); return 0; #endif #if TC_ENABLE_STARTMENU case CLOCKM_REFRESHSTARTMENU: // refresh Start menu OnRefreshStartMenu(hwnd); return 0; #endif case CLOCKM_REFRESHTOOLTIP: // refresh tooltip OnRefreshTooltip(hwnd); return 0; case CLOCKM_BLINK: // blink the clock g_nBlink = 2; m_nBlinkSec = lParam; if(lParam) m_nBlinkTick = GetTickCount(); return 0; case CLOCKM_COPY: // copy format to clipboard OnCopy(hwnd, NULL); return 0; #if TC_ENABLE_VOLUME case CLOCKM_VOLCHANGE: OnVolumeChange(hwnd); return 0; #endif case WM_COPYDATA: OnCopyData(hwnd, (HWND)wParam, (COPYDATASTRUCT*)lParam); return 0; /* WM_DESTROY is sent only when Win95+IE4/98/Me is shut down */ case WM_DESTROY: OnDestroy(hwnd); // main2.c break; } return CallWindowProc(g_oldWndProc, hwnd, message, wParam, lParam); }