新四季網

一種基於ManagedC實現WPF窗體與GDI窗體消息互操作的方法

2023-05-23 10:40:01 3

專利名稱:一種基於Managed C實現WPF窗體與GDI窗體消息互操作的方法
技術領域:
本發明涉及一種界面製作相關技術,尤其是涉及一種基於Managed C實現WPF窗體與GDI窗體消息互操作的方法。
背景技術:
WPF是基於DirectX技術的圖形系統,利用硬體加速及圖形向量渲染,從呈現效果及性能上大大改善了傳統2D圖形窗口用戶體驗,其完善的Ui架構能快速幫助程序開發出媲美Mac的酷炫界面。在WPF中,傳統的窗口概念已發生了改變,窗口也是其渲染系統中一個普通的可視元素,並且與其它所有界面元素統一渲染,用戶無法直接在這窗口區域繪製自己圖形(因為一個區域只能用一種方式來渲染)。三維引擎或者其它的很多傳統的應用程式,都是基於GDI的窗口句柄,截獲其重繪消息,將自定義的渲染結果呈現在窗口上,並通過GDI的消息機制獲取用戶的輸入,其中⑶I (Graphics Device Interface)為圖形設備接口,其為Windows的子系統,負責在視訊顯示器和印表機上顯示圖形。隨著計算機硬體快速發展,用戶對軟體的體驗要求越來越高,GDI窗口及相關的技術在開發用戶圖形界面上已漸漸顯得力不從心。利用WPF提供HWNDH0ST技術,可以將⑶I窗口嵌入到wpf中應用程式中,在⑶I窗口區域實現自定義渲染,而在非GDI區域實現各種用好的圖形界面。當前實現WPF窗體的方法有多種,不管是使用D3DImage還是使用HWNDH0ST技術,都普遍存在兩者交互性差如,窗口大小變化時出現閃爍,應用程式無法接收滑鼠鍵盤一些特殊輸入消息等問題。

發明內容
本發明的目的就是為了克服上述現有技術存在的缺陷而提供一種適用範圍廣、擴展性好、操作方便的基於Managed C實現WPF窗體與⑶I窗體消息互操作的方法。本發明的目的可以通過以下技術方案來實現一種基於Managed C實現WPF窗體與⑶I窗體消息互操作的方法,其特徵在於,包括採用Managed c++創建一個⑶I窗口,並提供相應的API,同時生成一個DLL ;在WPF應用程式中定義一個派生自HwndHost的窗口類,在該窗口類將DLL提供的⑶I作為其子窗口,並以委託方式實現⑶I窗口中需要處理的消息。具體過程如下a)採用c#定義一個派生自HwndHost的窗口類;b)採用Managed c++註冊一個⑶I窗口,實現將· net程序傳過來的委託函數轉化為C++可處理的函數指針;c)判斷是否註冊成功,若為是,創建一個⑶I窗口,並返回該窗口的句柄,執行步驟d),否則,返回步驟b);d)將⑶I窗口作為HwndHost類的子窗口,得到一個在WPF中呈現自定義應用程式的⑶I子窗口 ;e)將⑶I子窗口放在WPF窗口上,該⑶I子窗口和其它WPF控制項一樣放在WPF窗口的任意位置;
f)⑶I子窗口自定義圖形渲染,並實現圖形呈現的更新;同時WPF各個界面控制項根據WPF消息的機制及渲染機制實現接收、轉發用戶輸入及界面呈現;g)⑶I窗口根據WPF用戶輸入期望的圖形呈現,WPF界面同時將圖形的屬性變化通過豐富的控制項Π反饋給用戶。所述的派生自HwndHost的窗口類中包括窗口過程函數、滑鼠構子處理函數和鍵盤鉤子處理函數。所述的⑶I子窗口根據窗口過程函數實現圖形呈現的更新。與現有技術相比,本發明具有以下優點I)適用範圍廣,提供獨立於應用⑶I窗口 dll庫,該dll可以很多windows程序中使用;2)擴展性好,使用Managed c++實現的dll,可以直接在Dot Net c#語言中直接使用,避免使用p/invoke聲明大量的API及結構體,也提供了更好的擴展性;3)操作方便,將窗口過程在應用程式中實現,大大方便應用中各種消息處理過程。


圖1為本發明實現的流程圖。
具體實施例方式下面結合附圖和具體實施例對本發明進行詳細說明。實施例如圖1所不,一種基於Managed C實現WPF窗體與⑶I窗體消息互操作的方法,包括;採用Managed c++創建一個⑶I窗口,並提供相應的API,同時生成一個DLL ;在WPF應用程式中定義一個派生自HwndHost的窗口類,在該窗口類將DLL提供的⑶I作為其子窗口,並以委託方式實現⑶I窗口中需要處理的消息。本發明的具體過程如下I)編寫好⑶I窗口類程序,並調試通過,以dll的方式輸出;2)在WPF程序中實現一個派生自HwndHost的窗口類,在該類中實現一個窗口過程函數,提供窗口類的名稱,將窗口過程函數及窗口類名作為參數,調用GDI窗口創建子窗口,並子窗口作為HwndHost的子窗口 ;3)在⑶I窗口中實現自定義圖形渲染,wpf窗口接收滑鼠,鍵盤等各種用戶輸入,並根據需求轉發給GDI窗口,GDI窗口根據從程序中獲取的條件更新渲染;圖形屬性更新通過wpf屬性綁定機制及時的反饋在程序界面上。
權利要求
1.一種基於Managed C實現WPF窗體與⑶I窗體消息互操作的方法,其特徵在於,包括 採用Managed c++創建一個⑶I窗口,並提供相應的API,同時生成一個DLL ;在WPF應用程式中定義一個派生自HwndHost的窗口類,在該窗口類將DLL提供的GDI作為其子窗口,並以委託方式實現⑶I窗口中需要處理的消息。
2.根據權利要求1所述的一種基於ManagedC實現WPF窗體與GDI窗體消息互操作的方法,其特徵在於,具體過程如下 a)採用c#定義一個派生自HwndHost的窗口類; b)採用Managedc++註冊一個⑶I窗口,實現將· net程序傳過來的委託函數轉化為c++可處理的函數指針; c)判斷是否註冊成功,若為是,創建一個GDI窗口,並返回該窗口的句柄,執行步驟d),否則,返回步驟b); d)將⑶I窗口作為HwndHost類的子窗口,得到一個在WPF中呈現自定義應用程式的GDI子窗口 ; e)將⑶I子窗口放在WPF窗口上,該⑶I子窗口和其它WPF控制項一樣放在WPF窗口的任意位置; f)GDI子窗口自定義圖形渲染,並實現圖形呈現的更新;同時WPF各個界面控制項根據WPF消息的機制及渲染機制實現接收、轉發用戶輸入及界面呈現; g)⑶I窗口根據WPF用戶輸入期望的圖形呈現,WPF界面同時將圖形的屬性變化通過豐富的控制項Π反饋給用戶。
3.根據權利要求2所述的一種基於ManagedC實現WPF窗體與GDI窗體消息互操作的方法,其特徵在於,所述的派生自HwndHost的窗口類中包括窗口過程函數、滑鼠構子處理函數和鍵盤鉤子處理函數。
4.根據權利要求3所述的一種基於ManagedC實現WPF窗體與GDI窗體消息互操作的方法,其特徵在於,所述的GDI子窗口根據窗口過程函數實現圖形呈現的更新。
全文摘要
本發明涉及一種基於Managed C實現WPF窗體與GDI窗體消息互操作的方法,包括採用Managed c++創建一個GDI窗口,並提供相應的API,同時生成一個DLL;在WPF應用程式中定義一個派生自HwndHost的窗口類,在該窗口類將DLL提供的GDI作為其子窗口,並以委託方式實現GDI窗口中需要處理的消息。與現有技術相比,本發明具有適用範圍廣、擴展性好、操作方便等優點。
文檔編號G06F9/44GK103034490SQ20121051780
公開日2013年4月10日 申請日期2012年12月5日 優先權日2012年12月5日
發明者鄭婉清, 林秀全, 張生言 申請人:上海創圖網絡科技發展有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀