日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

在WPF中处理Windows消息

發(fā)布時(shí)間:2023/12/13 windows 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在WPF中处理Windows消息 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在Winform中 處理Windows消息通過重寫WndProc方法

在WPF中 使用的是System.Windows. Sytem.Windows.Controls等名字空間,沒有WndProc函數(shù)

WPF中處理消息首先要獲取窗口句柄,創(chuàng)建HwndSource對象 通過HwndSource對象添加消息處理回調(diào)函數(shù)。

此外 WPF中沒有Handle屬性,不能直接獲得窗口的句柄

可以在構(gòu)造函數(shù)中指定消息進(jìn)行消息處理的回調(diào)函數(shù),也可以在資源初始化后指定,在很多地方都可以指定。

以下是在資源初始化后指定

protected?override?void?OnSourceInitialized(EventArgs?e)
????????{
????????????base.OnSourceInitialized(e);
????????????HwndSource?hwndSource?=?PresentationSource.FromVisual(this)?as?HwndSource;
????????????if?(hwndSource?!=?null)
????????????????hwndSource.AddHook(new?HwndSourceHook(this.WndProc));
????????}

注意要使用System.Windows.Interop名字空間,以上增加了一個(gè)回調(diào)委托

protected?virtual?IntPtr?WndProc(IntPtr?hwnd,?int?msg,?IntPtr?wParam,?IntPtr?lParam,?ref?bool?handled)
{
????switch?(msg)
????{
????????case?Win32.WM_NCHITTEST:
????????????{
????????????????Point?MouseScreenPoint?=?new?Point(lParam.ToInt32()?&?0xFFFF,?lParam.ToInt32()?>>?16);
????????????????Point?MouseWindowPoint?=?this.PointFromScreen(MouseScreenPoint);
????????????????if?(MouseWindowPoint.X?<?10?&&?MouseWindowPoint.Y?<?10)
????????????????{
????????????????????handled?=?true;
????????????????????return?(IntPtr)Win32.HTTOPLEFT;
????????????????}
????????????????
????????????????break;
????????????}
????}
????return?IntPtr.Zero;
}

這里有一個(gè)引用傳遞的參數(shù)handled ,處理消息后設(shè)置為true 告訴系統(tǒng)這個(gè)消息已經(jīng)處理過了。

轉(zhuǎn)載于:https://www.cnblogs.com/mschen/p/4312707.html

總結(jié)

以上是生活随笔為你收集整理的在WPF中处理Windows消息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。