MsgRouting AwtCheckbox::WmMouseUp(UINT flags, int x, int y, int button) { MsgRouting mrResult = AwtComponent::WmMouseUp(flags, x, y, button); POINT p = {x, y}; RECT rect; ::GetClientRect(GetHWnd(), &rect); if (::PtInRect(&rect, p) && button == LEFT_BUTTON) { WmNotify(BN_CLICKED); } return mrResult; }
MsgRouting AwtCheckbox::HandleEvent(MSG *msg, BOOL synthetic) { if (IsFocusingMouseMessage(msg)) { SendMessage(BM_SETSTATE, (WPARAM)(msg->message == WM_LBUTTONDOWN ? TRUE : FALSE)); delete msg; return mrConsume; } if (IsFocusingKeyMessage(msg)) { SendMessage(BM_SETSTATE, (WPARAM)(msg->message == WM_KEYDOWN ? TRUE : FALSE)); if (msg->message == WM_KEYDOWN) { m_fLButtonDowned = TRUE; } else if (m_fLButtonDowned == TRUE) { WmNotify(BN_CLICKED); m_fLButtonDowned = TRUE; } delete msg; return mrConsume; } return AwtComponent::HandleEvent(msg, synthetic); }
MsgRouting AwtCheckbox::WmMouseUp(UINT flags, int x, int y, int button) { MsgRouting mrResult = AwtComponent::WmMouseUp(flags, x, y, button); if (::IsWindow(AwtWindow::GetModalBlocker(AwtComponent::GetTopLevelParentForWindow(GetHWnd())))) { return mrConsume; } POINT p = {x, y}; RECT rect; ::GetClientRect(GetHWnd(), &rect); if (::PtInRect(&rect, p) && button == LEFT_BUTTON && m_fLButtonDowned) { WmNotify(BN_CLICKED); } m_fLButtonDowned = FALSE; return mrResult; }
MsgRouting AwtList::HandleEvent(MSG *msg, BOOL synthetic) { if (IsFocusingMouseMessage(msg)) { LONG item = static_cast<LONG>(SendListMessage(LB_ITEMFROMPOINT, 0, msg->lParam)); if (item != LB_ERR) { if (isMultiSelect) { if (IsItemSelected(item)) { Deselect(item); } else { Select(item); } } else { Select(item); } } delete msg; return mrConsume; } if (msg->message == WM_KEYDOWN && msg->wParam == VK_RETURN) { WmNotify(LBN_DBLCLK); } return AwtComponent::HandleEvent(msg, synthetic); }
LRESULT SWindow::WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if(HWindow == NULL) HWindow = hwnd; Org_Mes OrgMes; OrgMes.AutoDelete = AutoDelete; OrgMes.ControlMode = ControlMode; OrgMes.HWindow = hwnd; OrgMes.OriginalWndProc = OriginalWndProc; OrgMes.uMsg = uMsg; OrgMes.wParam = wParam; OrgMes.lParam = lParam; OrgMes.ExecMessage = false; OrgMes.RetProcCode = 0; bool RetMessage = false; LRESULT RetCode; switch(uMsg) { case WM_COMMAND: WmCommand(&OrgMes, HIWORD(wParam), LOWORD(wParam), reinterpret_cast<HWND>(lParam)); break; case WM_SYSCOMMAND: WmSysCommand(&OrgMes, static_cast<UINT>(wParam), GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); break; case WM_APPCOMMAND: RetMessage = true; RetCode = WmAppCommand(&OrgMes, lParam); break; case WM_NOTIFY: RetMessage = true; RetCode = WmNotify(&OrgMes, static_cast<UINT>(wParam), reinterpret_cast<LPNMHDR>(lParam)); break; case WM_SHOWWINDOW: WmShowWindow(&OrgMes, wParam, lParam); break; case WM_SIZE: WmSize(&OrgMes, static_cast<UINT>(wParam), LOWORD(lParam), HIWORD(lParam)); break; case WM_MOVE: WmMove(&OrgMes, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); break; case WM_PAINT: WmPaint(&OrgMes); break; case WM_MOUSEMOVE: WmMouseMove(&OrgMes, static_cast<UINT>(wParam), GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); break; case WM_LBUTTONDOWN: WmLButtonDown(&OrgMes, static_cast<UINT>(wParam), GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); break; case WM_RBUTTONDOWN: WmRButtonDown(&OrgMes, static_cast<UINT>(wParam), GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); break; case WM_LBUTTONUP: WmLButtonUp(&OrgMes, static_cast<UINT>(wParam), GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); break; case WM_RBUTTONUP: WmRButtonUp(&OrgMes, static_cast<UINT>(wParam), GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); break; case WM_LBUTTONDBLCLK: WmLButtonDblClk(&OrgMes, static_cast<UINT>(wParam), GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); break; case WM_RBUTTONDBLCLK: WmRButtonDblClk(&OrgMes, static_cast<UINT>(wParam), GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); break; case WM_DROPFILES: WmDropFiles(&OrgMes, reinterpret_cast<HDROP>(wParam)); break; case WM_KEYDOWN: WmKeyDown(&OrgMes, static_cast<int>(wParam), static_cast<UINT>(lParam)); break; case WM_CHAR: WmChar(&OrgMes, static_cast<TCHAR>(wParam), static_cast<UINT>(lParam)); break; case WM_CONTEXTMENU: WmContextMenu( &OrgMes, reinterpret_cast<HWND>(wParam), GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); break; case WM_MENUSELECT: WmMenuSelect(&OrgMes, LOWORD(wParam), HIWORD(wParam), reinterpret_cast<HMENU>(lParam)); break; case WM_DRAWITEM: RetMessage = true; RetCode = WmDrawItem( &OrgMes, static_cast<int>(wParam), reinterpret_cast<LPDRAWITEMSTRUCT>(lParam)); break; case WM_TIMER: WmTimer(&OrgMes, static_cast<UINT>(wParam), reinterpret_cast<TIMERPROC*>(lParam)); break; case WM_ACTIVATE: WmActivate(&OrgMes, LOWORD(wParam), HIWORD(wParam) != 0, reinterpret_cast<HWND>(lParam)); break; case WM_SETCURSOR: WmSetCursor(&OrgMes, reinterpret_cast<HWND>(wParam), LOWORD(lParam), HIWORD(lParam)); break; case WM_SETFOCUS: WmSetFocus(&OrgMes, reinterpret_cast<HWND>(wParam)); break; case WM_KILLFOCUS: WmKillFocus(&OrgMes, reinterpret_cast<HWND>(wParam)); break; /* case WM_CTLCOLORDLG: RetMessage = true; RetCode = reinterpret_cast<LRESULT> (WmCtlColorDlg(&OrgMes, reinterpret_cast<HWND>(lParam), reinterpret_cast<HDC>(wParam))); break; case WM_CTLCOLORSTATIC: RetMessage = true; RetCode = reinterpret_cast<LRESULT> (WmCtlColorStatic(&OrgMes, reinterpret_cast<HWND>(lParam), reinterpret_cast<HDC>(wParam))); break; case WM_CTLCOLOREDIT: RetMessage = true; RetCode = reinterpret_cast<LRESULT> (WmCtlColorEdit(&OrgMes, reinterpret_cast<HWND>(lParam), reinterpret_cast<HDC>(wParam))); break; case WM_CTLCOLORLISTBOX: RetMessage = true; RetCode = reinterpret_cast<LRESULT> (WmCtlColorListBox(&OrgMes, reinterpret_cast<HWND>(lParam), reinterpret_cast<HDC>(wParam))); break; case WM_ERASEBKGND: RetMessage = true; RetCode = WmEraseBkGnd(&OrgMes, reinterpret_cast<HDC>(wParam)); break; */ case WM_CREATE: RetMessage = true; RetCode = WmCreate(&OrgMes, reinterpret_cast<LPCREATESTRUCT>(lParam)); SetupWindow(); break; case WM_INITDIALOG: RetMessage = true; RetCode = WmInitDialog(&OrgMes, reinterpret_cast<HWND>(wParam), static_cast<LONG>(lParam)); break; case WM_CLOSE: WmClose(&OrgMes); break; case WM_DESTROY: WmDestroy(&OrgMes); if(OrgMes.AutoDelete) { SetWindowLongPtr(GWLP_USERDATA, NULL); delete this; } break; case WM_SYSCOLORCHANGE: WmSysColorChange(&OrgMes); break; case WM_QUERYENDSESSION: RetMessage = true; RetCode = WmQueryEndSession(&OrgMes, static_cast<UINT>(wParam)); break; case WM_ENDSESSION: WmEndSession(&OrgMes, wParam != 0); if(OrgMes.AutoDelete && wParam) { SetWindowLongPtr(GWLP_USERDATA, NULL); delete this; } break; default: if((uMsg >= WM_USER) && (uMsg <= 0x7fff)) { RetMessage = true; RetCode = WmUser(&OrgMes, uMsg, wParam, lParam); } else { DefaultProc(&OrgMes); } break; } if(RetMessage == false) { if(OrgMes.OriginalWndProc || (OrgMes.ControlMode == ControlMode_Normal)) { RetCode = OrgMes.ExecMessage ? 0 : OrgMes.RetProcCode; } else { RetCode = OrgMes.ExecMessage; } } return RetCode; }