keep_a_cat |
2020-01-09 11:12 |
m_mousePos//当鼠标移动到边框时,将这个变量改成对于的属性(HTCAPTION)标题栏就行了
bool VTK3DModelEditor::nativeEvent(const QByteArray &eventType, void *message, long *result) { MSG* msg = (MSG*)message; switch (msg->message) {
case WM_NCHITTEST: { initMousePos(); switch (m_mousePos) { case MousePos_Cap: *result = HTCAPTION; return true; case MousePos_Top: *result = HTTOP; return true; case MousePos_Bom: *result = HTBOTTOM; return true; case MousePos_Left: *result = HTLEFT; return true; case MousePos_Right: *result = HTRIGHT; return true; case MousePos_TopLeft: *result = HTTOPLEFT; return true; case MousePos_TopRight: *result = HTTOPRIGHT; return true; case MousePos_BomLeft: *result = HTBOTTOMLEFT; return true; case MousePos_BomRight: *result = HTBOTTOMRIGHT; return true; case MousePos_None: default: break; } } break; case WM_NCCALCSIZE: return true;
case WM_GETMINMAXINFO: { static int flag = 3; if (::IsZoomed(msg->hwnd)) { if (flag == 1) { *result = ::DefWindowProc(msg->hwnd, msg->message, msg->wParam, msg->lParam); return true; } flag = 1; RECT frame = { 0, 0, 0, 0 }; AdjustWindowRectEx(&frame, WS_OVERLAPPEDWINDOW, FALSE, 0); frame.left = abs(frame.left); frame.top = abs(frame.bottom); this->setContentsMargins(frame.left, frame.top, frame.right, frame.bottom); } else { if (flag == 0) { *result = ::DefWindowProc(msg->hwnd, msg->message, msg->wParam, msg->lParam); return true; } flag = 0; this->setContentsMargins(0, 0, 0, 0); }
*result = ::DefWindowProc(msg->hwnd, msg->message, msg->wParam, msg->lParam); return true; } break; }
return QWidget::nativeEvent(eventType, message, result); } |
|