1
A
回答
1
我想出瞭如何在WPF UserControl中實現WndProc。在我的例子中,UserControl必須獲得一個類似於AppendWindow方法的窗口指針:
private static MyUserControl instanceWithFocus;
public void AppendWindow(Window window) {
HwndSource source = HwndSource.FromHwnd(new WindowInteropHelper(window).Handle);
source.AddHook(new HwndSourceHook(WndProc));
}
private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) {
switch (msg) {
case Win32Messages.WM_MOUSEHWHEEL:
MouseWheelTilt(wParam, lParam);
handled = true;
break;
default:
break;
}
return IntPtr.Zero;
}
private static void MouseWheelTilt(IntPtr wParam, IntPtr lParam) {
Int32 tilt = (Int16)Utils.HIWORD(wParam);
Int32 keys = Utils.LOWORD(wParam);
Int32 x = Utils.LOWORD(lParam);
Int32 y = Utils.HIWORD(lParam);
// call an event on active instance of this object
if (instanceWithFocus != null) {
instanceWithFocus.MouseWheelTilt(tilt, keys, x, y);
}
}
private void MouseWheelTilt(Int32 tilt, Int32 keys, Int32 x, Int32 y) {
scrollViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset + tilt);
}
private void UserControl_MouseEnter(object sender, MouseEventArgs e) {
instanceWithFocus = this;
}
private void UserControl_MouseLeave(object sender, MouseEventArgs e) {
instanceWithFocus = null;
}
abstract class Win32Messages {
public const int WM_MOUSEHWHEEL = 0x020E;
}
abstract class Utils {
internal static Int32 HIWORD(IntPtr ptr) {
Int32 val32 = ptr.ToInt32();
return ((val32 >> 16) & 0xFFFF);
}
internal static Int32 LOWORD(IntPtr ptr) {
Int32 val32 = ptr.ToInt32();
return (val32 & 0xFFFF);
}
}
相關問題
- 1. 編程一個「向左傾斜和向右傾斜」 - Kinect中的手勢
- 2. 追蹤左右手機的斜率
- 3. 與傾斜右下角
- 4. 如何使css中的右側傾斜?
- 5. 手柄反斜槓
- 6. CMMotionManager傾斜移動節點左右Swift 4
- 7. 使用css向右邊框和左邊框傾斜
- 8. 團結 - 向左或向右傾斜飛船
- 9. 與左,右邊緣旋轉格傾斜/切回平行
- 10. 在黑莓手柄中左右軌跡球刷卡
- 11. 帶兩個手柄的Android滑動抽屜(從右到左)
- 12. 在左/右方向傾斜的平截頭體的Android opengl問題
- 13. 2D 45度傾斜傾斜瓷磚
- 14. 傾斜手機。加速度計錯誤
- 15. windows 7手機傾斜效果?
- 16. 如何檢測手機傾斜?
- 17. 在傾斜類按鈕中沒有傾斜的文本
- 18. 如何使寫在文本框中的文本向右傾斜?
- 19. Android中傾斜的EditText?
- 20. CHROME中的傾斜盒子
- 21. SVG中的傾斜文本
- 22. 傾斜團結
- 23. 與iPad傾斜
- 24. 傾斜,CSS3
- 25. WPF手柄拖放以及左鍵單擊
- 26. WPF中的填充(左,上,右,下)
- 27. 傾斜使用css的div的頂部沒有傾斜文本
- 28. 左右拉不上手機
- 29. 在css中傾斜段落,但保持每行左對齊
- 30. 在libgdx中傾斜精靈
帶陀螺儀的鼠標? – Anvaka 2009-12-01 08:46:51