void VDPositionControlW32::Notify(UINT code, VDPositionControlEventData::EventType eventType) { NMHDR nm; nm.hwndFrom = mhwnd; nm.idFrom = GetWindowLong(mhwnd, GWL_ID); nm.code = code; SendMessage(GetParent(mhwnd), WM_NOTIFY, nm.idFrom, (LPARAM)&nm); if (eventType) { VDPositionControlEventData eventData; eventData.mPosition = mPosition; eventData.mEventType = eventType; mPositionUpdatedEvent.Raise(this, eventData); } }
void VDPositionControlW32::InternalSetPosition(VDPosition pos, VDPositionControlEventData::EventType eventType) { if (pos < mRangeStart) pos = mRangeStart; if (pos > mRangeEnd) pos = mRangeEnd; if (pos != mPosition) { mPosition = pos; RecalcThumbRect(pos, true); UpdateString(); VDPositionControlEventData eventData; eventData.mPosition = mPosition; eventData.mEventType = eventType; mPositionUpdatedEvent.Raise(this, eventData); } }
LRESULT VDUIHotKeyExControlW32::WndProc(UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_NCCREATE: SetFont(NULL); break; case WM_GETDLGCODE: if (lParam) return DLGC_WANTMESSAGE; return DLGC_WANTALLKEYS; case WM_ERASEBKGND: return FALSE; case WM_PAINT: OnPaint(); return 0; case WM_GETFONT: return (LRESULT)wParam; case WM_SETFONT: SetFont((HFONT)wParam); if (LOWORD(lParam)) InvalidateRect(mhwnd, NULL, TRUE); return 0; case WM_LBUTTONDOWN: SetFocus(mhwnd); return 0; case WM_SETFOCUS: CreateCaret(mhwnd, NULL, 0, mFontHeight); UpdateCaretPosition(); ShowCaret(mhwnd); break; case WM_KILLFOCUS: HideCaret(mhwnd); DestroyCaret(); break; case WM_KEYDOWN: case WM_SYSKEYDOWN: mAccel.mVirtKey = 0; mAccel.mModifiers = 0; if (wParam == VK_CONTROL) mCurrentMods |= VDUIAccelerator::kModCtrl; else if (wParam == VK_SHIFT) mCurrentMods |= VDUIAccelerator::kModShift; else if (wParam == VK_MENU) mCurrentMods |= VDUIAccelerator::kModAlt; else { mAccel.mVirtKey = wParam; if (lParam & (1 << 24)) mAccel.mModifiers |= VDUIAccelerator::kModExtended; } mAccel.mModifiers |= mCurrentMods; UpdateText(); UpdateCaretPosition(); mEventOnChange.Raise(this, mAccel); return 0; case WM_SYSKEYUP: case WM_KEYUP: if (wParam == VK_CONTROL) mCurrentMods &= ~VDUIAccelerator::kModCtrl; else if (wParam == VK_SHIFT) mCurrentMods &= ~VDUIAccelerator::kModShift; else if (wParam == VK_MENU) mCurrentMods &= ~VDUIAccelerator::kModAlt; else break; UpdateText(); UpdateCaretPosition(); mEventOnChange.Raise(this, mAccel); return 0; } return DefWindowProc(mhwnd, msg, wParam, lParam); }