void CLockedEdit::mouseDoubleClickEvent(QMouseEvent *event) { CPoint point(event->pos()); unsigned int flags = 0; if ( event->modifiers()&Qt::ControlModifier ) { flags |= MK_CONTROL; } if ( event->modifiers()&Qt::ShiftModifier ) { flags |= MK_SHIFT; } if ( event->buttons()&Qt::LeftButton ) { flags |= MK_LBUTTON; } if ( event->buttons()&Qt::MiddleButton ) { flags |= MK_MBUTTON; } if ( event->buttons()&Qt::RightButton ) { flags |= MK_RBUTTON; } if ( event->button() == Qt::LeftButton ) { OnLButtonDblClk(flags,point); } }
// 鼠标左键双击事件处理 void CDlgPopup::OnLButtonDblClk(UINT nFlags, CPoint point) { m_bIsLButtonDblClk = TRUE; if(m_pControl) { if(m_pControl->GetVisible() && m_pControl->GetRresponse()) { CRect rc = m_pControl->GetRect(); m_pControl->OnLButtonDblClk(nFlags, point); if (!rc.PtInRect(point)) { m_pControl = NULL; } } else { m_pControl = NULL; } } // 调用自身的函数 if(OnLButtonDblClk(point)) { DrawWindow(); } ResetControl(); CWnd::OnLButtonDblClk(nFlags, point); }
//窗口处理函数 LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_MOUSEWHEEL: OnMouseWheel( hWnd, wParam ); break; case WM_LBUTTONDBLCLK: OnLButtonDblClk( hWnd ); break; case WM_PAINT: OnPaint( hWnd ); break; case WM_MOUSEMOVE: OnMouseMove( hWnd, lParam ); break; case WM_LBUTTONDOWN: OnLButtonDown( hWnd, wParam, lParam ); break; case WM_LBUTTONUP: OnLButtonUp( hWnd, wParam, lParam ); break; case WM_DESTROY: PostQuitMessage( 0 ); break; } return DefWindowProc( hWnd, msg, wParam, lParam ); }
void CMultiSelTreeCtrl::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { if (nChar == VK_RETURN) { HTREEITEM item = GetSelectedItem(0); if (item) OnLButtonDblClk(item); return; } CTreeCtrl::OnChar(nChar, nRepCnt, nFlags); }
BOOL CXTPPropertyGridItemBool::OnKeyDown (UINT nChar) { if (m_bCheckBoxStyle && IsAllowEdit() && (nChar == VK_SPACE)) { CRect rc = GetValueRect(); OnLButtonDblClk(0, rc.CenterPoint()); return TRUE; } return FALSE; }
BOOL CXTPPropertyGridItemBool::OnLButtonDown(UINT nFlags, CPoint point) { if (!CXTPPropertyGridItem::OnLButtonDown(nFlags, point)) return FALSE; if (m_bCheckBoxStyle) { if (PtInCheckBoxRect(point) && IsAllowEdit()) { OnLButtonDblClk(nFlags, point); } } return TRUE; }
LRESULT CMainWindow::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { if (uMsg == WM_MOUSEMOVE) OnMouseMove(uMsg, wParam, lParam); if (uMsg == WM_RBUTTONDOWN) { LRESULT lRes = __super::HandleMessage(uMsg, wParam, lParam); OnRButtonDown(uMsg, wParam, lParam); return lRes; } if (uMsg == WM_LBUTTONDBLCLK) OnLButtonDblClk(uMsg, wParam, lParam); if ((m_pSendEdit != NULL) && m_pSendEdit->IsFocused() && (uMsg == WM_KEYDOWN) && (wParam == 'V') && (lParam & VK_CONTROL)) // 发送消息框的Ctrl+V消息 { m_pSendEdit->PasteSpecial(CF_TEXT); return TRUE; } if (uMsg == WM_NOTIFY && EN_PASTE == ((LPNMHDR)lParam)->code) { ITextServices * pTextServices = m_pSendEdit->GetTextServices(); if ((UINT)pTextServices == ((LPNMHDR)lParam)->idFrom) { AddMsgToSendEdit(((NMRICHEDITOLECALLBACK *)lParam)->lpszText); } if (pTextServices != NULL) pTextServices->Release(); } if (uMsg == WM_MENU) { CControlUI * pControl = (CControlUI *)lParam; if (pControl != NULL) this->paint_manager_.SendNotify(pControl, _T("menu_msg"), wParam, lParam); } if (uMsg == FACE_CTRL_SEL) return OnFaceCtrlSel(uMsg, wParam, lParam); if (uMsg == WM_DROPFILES) return onDropFiles(uMsg, wParam, lParam); return __super::HandleMessage(uMsg, wParam, lParam); }
///*---------------------------------------------------------------------------------------- /// CWinCtrl unsigned int CTree::Process( UINT uiMsg,WPARAM wParam,LPARAM lParam ) { if(!IsVision() ) return 0; POINT ptMouse = { LOWORD(lParam), HIWORD(lParam ) }; //영역안에 있는지 체크 if(!IsInside( ptMouse.x, ptMouse.y )) { //m_iButtonState = BS_NORMAL; return 0; } ptMouse.x -= m_sPosition.x; ptMouse.y -= m_sPosition.y; RECT rc = { 0,0,m_iWidth,m_iRowHeight }; int iRow = 0; switch( uiMsg ) { case WM_LBUTTONDOWN: { for( ; rc.bottom < m_iHeight; rc.top += m_iRowHeight, rc.bottom += m_iRowHeight, ++iRow ) { if( PtInRect( &rc, ptMouse ) ) { OnLButtonDown( iRow ); return m_iControlID; } } break; } case WM_LBUTTONDBLCLK: { for( ; rc.bottom < m_iHeight; rc.top += m_iRowHeight, rc.bottom += m_iRowHeight, ++iRow ) { if( PtInRect( &rc, ptMouse ) ) { OnLButtonDblClk( iRow ); return m_iControlID; } } break; } } return m_iControlID; }
BOOL CZoneTree::MenuSelect(UINT id) { HTREEITEM it, par; room_data *room; int index; CPoint pos; CWinDEDlg *parent = (CWinDEDlg*)GetParent(); switch(id) { case ID_TREE_GOTO: par = GetSelectedItem(); room = (room_data*)GetItemData(par); parent->in_room = room; parent->ShowRoom(); break; case ID_TREE_EDIT_AREA: case ID_TREE_EDIT_ROOM: case ID_TREE_EDIT_MINDEX: case ID_TREE_EDIT_OINDEX: case ID_TREE_EDIT_MOB: case ID_TREE_EDIT_OBJ: GetCursorPos(&pos); OnLButtonDblClk(0, pos); break; case ID_TREE_DELETE_ROOM: case ID_TREE_DELETE_MOB: case ID_TREE_DELETE_OBJ: case ID_TREE_DELETE_OINDEX: case ID_TREE_DELETE_MINDEX: OnKeyUp(VK_DELETE, 1, 0); break; case ID_TREE_NEW_AREA: parent->OnNewArea(); break; case ID_TREE_SAVE_AREA: parent->OnSave(); break; case ID_TREE_OPEN_AREA: parent->OnOpen(); break; case ID_TREE_DELETE_ROOMS: parent->DeleteAllRooms(); break; case ID_TREE_DELETE_MOBS: parent->DeleteAllMobs(); break; case ID_TREE_DELETE_OBJS: parent->DeleteAllObjs(); break; case ID_TREE_ROOM_GRID: parent->OnCreateGrid(); break; case ID_TREE_FRIENDS: { mob_index *mob; DlgEditFriends friends; it = GetSelectedItem(); mob = (mob_index*)GetItemData(it); friends.mob = mob; friends.DoModal(); } break; case ID_TREE_REMOVE_PEOPLE: it = GetSelectedItem(); par = GetParentItem(it); room = (room_data*)GetItemData(par); DeleteItem(it); if(room) { room->m_tPeople = parent->InsertItem(CString("Occupants"), room->m_tThis, NULL, PEOPLE); room->RemoveEveryone(); } SortChildren(par); break; case ID_TREE_EDIT_EQUIP: { mob_index *mob; DlgEquipMob dlg_eq; it = GetSelectedItem(); mob = (mob_index*)GetItemData(it); dlg_eq.mob = mob; dlg_eq.DoModal(); } break; case ID_TREE_NEW_MOB: parent->OnNewMob(); break; case ID_TREE_NEW_OBJ: parent->OnNewObject(); break; case ID_TREE_NEW_ROOM: parent->OnNewRoom(); break; case ID_TREE_EDIT_CONTENTS: { DlgEditContents dlg_inv(this); par = GetSelectedItem(); dlg_inv.obj= (obj_index*)GetItemData(par); dlg_inv.DoModal(); } break; case ID_TREE_REMOVE_CONTENTS: it = GetSelectedItem(); par = GetParentItem(it); GetItemImage(par, index, index); switch(index) { case ROOM_DATA: room = (room_data*)GetItemData(par); DeleteItem(it); if(room) { room->m_tContents = parent->InsertItem(CString("Contents"), room->m_tThis, NULL, CONTENTS); room->RemoveContents(); } SortChildren(par); break; case OBJECT_DATA: { object_data *obj = (object_data*)GetItemData(par); DeleteItem(it); if(obj) { obj->RemoveContents(); } break; } case OBJ_INDEX: { obj_index *obj = (obj_index*)GetItemData(par); DeleteItem(it); if(obj) obj->RemoveContents(); break; } case MOB_INDEX: break; case MOB_DATA: break; } break; } return true; }
void CZoneTree::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) { CPoint pos; int i; HTREEITEM it; HTREEITEM contents; HTREEITEM parent; CWinDEDlg *dlg = (CWinDEDlg*)GetParent(); GetCursorPos(&pos); if(nChar == VK_RETURN) { GetParent()->SetFocus(); OnLButtonDblClk(nFlags, pos); } else if(nChar == VK_DELETE) { it = GetSelectedItem(); GetItemImage(it, i, i); switch(i) { case AREA_DATA: break; case ROOM_DATA: { room_data *room; room = (room_data*)GetItemData(it); dlg->DeleteRoom(room->vnum); break; } case MOB_DATA: { mob_data *mob; mob = (mob_data*)GetItemData(it); dlg->DeleteMob(mob->vnum); break; } case OBJECT_DATA: { object_data *obj; obj = (object_data*)GetItemData(it); dlg->DeleteObj(obj->vnum); break; } case MOB_INDEX: { mob_index *m_index; room_data *room; contents = GetParentItem(it); parent = GetParentItem(contents); m_index = (mob_index*)GetItemData(it); room = (room_data*)GetItemData(parent); room->RemovePerson(m_index); dlg->RemoveItem(m_index->m_tThis); delete m_index; break; } case OBJ_INDEX: { obj_index *o_index; o_index = (obj_index*)GetItemData(it); //get contents indexs parent item wich is the actual object contents = GetParentItem(it); parent = GetParentItem(contents); GetItemImage(parent, i, i); switch(i) { case OBJ_INDEX: { obj_index *o_parent; o_parent = (obj_index*)GetItemData(parent); o_parent->RemoveContent(&o_index); break; } case MOB_INDEX: break; case ROOM_DATA: room_data *room; room = (room_data*)GetItemData(parent); room->RemoveContent(o_index); break; case OBJECT_DATA: { object_data *obj_parent; obj_parent = (object_data*)GetItemData(parent); obj_parent->RemoveContent(o_index); break; } case MOB_DATA: break; } if(o_index) o_index->RemoveFromList(); dlg->RemoveItem(it); break; } } } }
//-------------------------------------------------------------------------------- bool CPointerController::ProcessMessage( COSWindow& Window, Cmp_long_ptr& lResult, unsigned int uMsg, Cmp_uint_ptr wParam, Cmp_long_ptr lParam ) { _WINQ_FCONTEXT( "CPointerController::ProcessMessage" ); bool bProcessed = ProcessHook( Window, lResult, uMsg, wParam, lParam ); switch ( uMsg ) { case COSWindow::wmMouseMove: { OnMouseMove( Window, wParam, lParam ); lResult = 0; bProcessed = true; } break; case COSWindow::wmLButtonDown: { OnLButtonDown( Window, wParam, lParam ); lResult = 0; bProcessed = true; } break; case COSWindow::wmLButtonUp: { OnLButtonUp( Window, wParam, lParam ); lResult = 0; bProcessed = true; } break; case COSWindow::wmLButtonDblClk: { OnLButtonDblClk( Window, wParam, lParam ); lResult = 0; bProcessed= true; } break; case COSWindow::wmRButtonDown: { OnRButtonDown( Window, wParam, lParam ); lResult = 0; bProcessed = true; } break; case COSWindow::wmRButtonUp: { OnRButtonUp( Window, wParam, lParam ); lResult = 0; bProcessed = true; } break; case COSWindow::wmRButtonDblClk: { OnRButtonDblClk( Window, wParam, lParam ); lResult = 0; bProcessed= true; } break; case COSWindow::wmMButtonDown: { OnMButtonDown( Window, wParam, lParam ); lResult = 0; bProcessed = true; } break; case COSWindow::wmMButtonUp: { OnMButtonUp( Window, wParam, lParam ); lResult = 0; bProcessed = true; } break; case COSWindow::wmMButtonDblClk: { OnMButtonDblClk( Window, wParam, lParam ); lResult = 0; bProcessed= true; } break; #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) case COSWindow::wmMouseWheel: { OnMouseWheel( Window, wParam, lParam ); lResult = 0; bProcessed = true; } break; #endif case COSWindow::wmCaptureChanged: { COSWindow::refType refWindow = COSWindow::FromHandle( CWindowHandle( 0, (void*)(lParam) ).Ref() ); OnCaptureChanged( Window, refWindow ); lResult = 0; bProcessed = true; } break; #if((_WIN32_WINNT >= 0x0400) || (WINVER >= 0x0500)) case COSWindow::wmMouseHover: { OnMouseHover( Window, wParam, lParam ); lResult = 0; bProcessed = true; } break; case COSWindow::wmMouseLeave: { OnMouseLeave( Window ); lResult = 0; bProcessed = true; } break; #endif } return bProcessed; }
bool CUIMainDialog::MsgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { // Mouse messages switch(uMsg) { case WM_LBUTTONDOWN: case WM_MBUTTONDOWN: case WM_RBUTTONDOWN: SetCapture(hWnd); break; case WM_LBUTTONUP: case WM_MBUTTONUP: case WM_RBUTTONUP: ReleaseCapture(); break; } switch(uMsg) { case WM_MOUSEMOVE: case WM_LBUTTONDOWN: case WM_LBUTTONUP: case WM_MBUTTONDOWN: case WM_MBUTTONUP: case WM_RBUTTONDOWN: case WM_RBUTTONUP: case WM_LBUTTONDBLCLK: case WM_MBUTTONDBLCLK: case WM_RBUTTONDBLCLK: case WM_MOUSEWHEEL: { POINT mousePoint = { short(LOWORD(lParam)), short(HIWORD(lParam)) }; switch(uMsg) { case WM_LBUTTONDBLCLK: OnLButtonDblClk(mousePoint); break; case WM_LBUTTONDOWN: OnLButtonDown(mousePoint); break; case WM_LBUTTONUP: OnLButtonUp(mousePoint); break; case WM_RBUTTONDBLCLK: OnRButtonDblClk(mousePoint); break; case WM_RBUTTONDOWN: OnRButtonDown(mousePoint); break; case WM_RBUTTONUP: OnRButtonUp(mousePoint); break; case WM_MBUTTONDBLCLK: OnMButtonDblClk(mousePoint); break; case WM_MBUTTONDOWN: OnMButtonDown(mousePoint); break; case WM_MBUTTONUP: OnMButtonUp(mousePoint); break; case WM_MOUSEMOVE: OnMouseMove(mousePoint); break; case WM_MOUSEWHEEL: //GetCursorPos(&mousePoint); ::ScreenToClient(hWnd,&mousePoint); OnMouseWheel(mousePoint,(short) HIWORD(wParam)); break; } } break; } UISetHWND(hWnd); // Let the CUIIMEEditBox's static message proc handle the msg. // This is because some IME messages must be handled to ensure // proper functionalities and the static msg proc ensures that // this happens even if no control has the input focus. if(CIME::StaticMsgProc(uMsg, wParam, lParam)) { //return true; } switch(uMsg) { case WM_SIZE: { RECT rc= {0,0,LOWORD(lParam), HIWORD(lParam)}; OnSize(rc); } break; case WM_ACTIVATEAPP: // Call OnFocusIn()/OnFocusOut() of the control that currently has the focus // as the application is activated/deactivated. This matches the Windows // behavior. if(s_pControlFocus && s_pControlFocus->GetEnabled()) { if(wParam) s_pControlFocus->OnFocusIn(); else s_pControlFocus->OnFocusOut(); } break; // Keyboard messages case WM_KEYDOWN: case WM_SYSKEYDOWN: case WM_KEYUP: case WM_SYSKEYUP: { // If a control is in focus, it belongs to this dialog, and it's enabled, then give // it the first chance at handling the message. if(s_pControlFocus && s_pControlFocus->GetEnabled()) { if(s_pControlFocus->HandleKeyboard(uMsg, wParam, lParam)) return true; } } break; case WM_CAPTURECHANGED: { // The application has lost mouse capture. // The dialog object may not have received // a WM_MOUSEUP when capture changed. Reset // m_bDrag so that the dialog does not mistakenly // think the mouse button is still held down. // if((HWND)lParam != hWnd) // { // SetPressed(false); // } // break; } } // 含焦点的控件 要优先处理消息 跨dialog处理 if(s_pControlFocus && s_pControlFocus->GetEnabled()) { // If the control MsgProc handles it, then we don't. if(s_pControlFocus->MsgProc(uMsg, wParam, lParam)) return true; } if(CUIDialog::MsgProc(hWnd, uMsg, wParam, lParam)) { return true; } //ClearState(); return false; }
LRESULT D3D11App::MsgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { // WM_ACTIVATE is sent when the window is activated or deactivated. // We pause the game when the window is deactivated and unpause it // when it becomes active. case WM_ACTIVATE: /* if (LOWORD(wParam) == WA_INACTIVE) { mAppPaused = true; mTimer.Stop(); } else { mAppPaused = false; mTimer.Start(); }*/ return 0; // WM_SIZE is sent when the user resizes the window. case WM_SIZE: // Save the new client area dimensions. mClientWidth = LOWORD(lParam); mClientHeight = HIWORD(lParam); if (SwapChainPtr->GetState()) { if (wParam == SIZE_MINIMIZED) { mAppPaused = true; mMinimized = true; mMaximized = false; } else if (wParam == SIZE_MAXIMIZED) { mAppPaused = false; mMinimized = false; mMaximized = true; OnResize(); } else if (wParam == SIZE_RESTORED) { // Restoring from minimized state? if (mMinimized) { mAppPaused = false; mMinimized = false; OnResize(); } // Restoring from maximized state? else if (mMaximized) { mAppPaused = false; mMaximized = false; OnResize(); } else if (mResizing) { // If user is dragging the resize bars, we do not resize // the buffers here because as the user continuously // drags the resize bars, a stream of WM_SIZE messages are // sent to the window, and it would be pointless (and slow) // to resize for each WM_SIZE message received from dragging // the resize bars. So instead, we reset after the user is // done resizing the window and releases the resize bars, which // sends a WM_EXITSIZEMOVE message. } else // API call such as SetWindowPos or mSwapChain->SetFullscreenState. { OnResize(); } } } return 0; // WM_EXITSIZEMOVE is sent when the user grabs the resize bars. case WM_ENTERSIZEMOVE: mAppPaused = true; mResizing = true; mTimer.Stop(); mClientWidthOld = mClientWidth; mClientHeightOld = mClientHeight; return 0; // WM_EXITSIZEMOVE is sent when the user releases the resize bars. // Here we reset everything based on the new window dimensions. case WM_EXITSIZEMOVE: mAppPaused = false; mResizing = false; mTimer.Start(); if ((mClientWidthOld != mClientWidth) && (mClientHeightOld!= mClientHeight)) { OnResize(); } return 0; /* case WM_PAINT: hDC = BeginPaint(hwnd, &paintStruct); EndPaint(hwnd, &paintStruct); break;*/ // Catch this message so to prevent the window from becoming too small. case WM_GETMINMAXINFO: ((MINMAXINFO*)lParam)->ptMinTrackSize.x = 200; ((MINMAXINFO*)lParam)->ptMinTrackSize.y = 200; return 0; case WM_DESTROY: PostQuitMessage(0); break; case WM_LBUTTONDOWN: case WM_MBUTTONDOWN: case WM_RBUTTONDOWN: OnMouseDown(wParam, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); return 0; case WM_LBUTTONUP: case WM_MBUTTONUP: case WM_RBUTTONUP: OnMouseUp(wParam, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); return 0; case WM_MOUSEMOVE: OnMouseMove(wParam, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); return 0; case WM_MOUSEWHEEL: { short zDelta = (short)HIWORD(wParam); OnMouseWheel(zDelta, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); return 0; } case WM_LBUTTONDBLCLK: OnLButtonDblClk(wParam, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); return 0; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; }