CN103034490A - 一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法 - Google Patents

一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法 Download PDF

Info

Publication number
CN103034490A
CN103034490A CN2012105178016A CN201210517801A CN103034490A CN 103034490 A CN103034490 A CN 103034490A CN 2012105178016 A CN2012105178016 A CN 2012105178016A CN 201210517801 A CN201210517801 A CN 201210517801A CN 103034490 A CN103034490 A CN 103034490A
Authority
CN
China
Prior art keywords
gdi
window
wpf
managed
subwindow
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012105178016A
Other languages
English (en)
Other versions
CN103034490B (zh
Inventor
郑婉清
林秀全
张生言
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Creatoo Network Technology Co ltd
Original Assignee
Shanghai Chuangtu Network Science & Technology Development Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Chuangtu Network Science & Technology Development Co Ltd filed Critical Shanghai Chuangtu Network Science & Technology Development Co Ltd
Priority to CN201210517801.6A priority Critical patent/CN103034490B/zh
Publication of CN103034490A publication Critical patent/CN103034490A/zh
Application granted granted Critical
Publication of CN103034490B publication Critical patent/CN103034490B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Digital Computer Display Output (AREA)

Abstract

本发明涉及一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法,包括:采用Managed c++创建一个GDI窗口,并提供相应的API,同时生成一个DLL;在WPF应用程序中定义一个派生自HwndHost的窗口类,在该窗口类将DLL提供的GDI作为其子窗口,并以委托方式实现GDI窗口中需要处理的消息。与现有技术相比,本发明具有适用范围广、扩展性好、操作方便等优点。

Description

一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法
技术领域
本发明涉及一种界面制作相关技术,尤其是涉及一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法。
背景技术
WPF是基于DirectX技术的图形系统,利用硬件加速及图形向量渲染,从呈现效果及性能上大大改善了传统2D图形窗口用户体验,其完善的ui架构能快速帮助程序开发出媲美Mac的酷炫界面。
在WPF中,传统的窗口概念已发生了改变,窗口也是其渲染系统中一个普通的可视元素,并且与其它所有界面元素统一渲染,用户无法直接在这窗口区域绘制自己图形(因为一个区域只能用一种方式来渲染)。
三维引擎或者其它的很多传统的应用程序,都是基于GDI的窗口句柄,截获其重绘消息,将自定义的渲染结果呈现在窗口上,并通过GDI的消息机制获取用户的输入,其中GDI(Graphics Device Interface)为图形设备接口,其为Windows的子系统,负责在视讯显示器和打印机上显示图形。
随着计算机硬件快速发展,用户对软件的体验要求越来越高,GDI窗口及相关的技术在开发用户图形界面上已渐渐显得力不从心。
利用WPF提供HWNDHOST技术,可以将GDI窗口嵌入到wpf中应用程序中,在GDI窗口区域实现自定义渲染,而在非GDI区域实现各种用好的图形界面。
当前实现WPF窗体的方法有多种,不管是使用D3DImage还是使用HWNDHOST技术,都普遍存在两者交互性差如,窗口大小变化时出现闪烁,应用程序无法接收鼠标键盘一些特殊输入消息等问题。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种适用范围广、扩展性好、操作方便的基于Managed C实现WPF窗体与GDI窗体消息互操作的方法。
本发明的目的可以通过以下技术方案来实现:
一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法,其特征在于,包括:
采用Managed c++创建一个GDI窗口,并提供相应的API,同时生成一个DLL;在WPF应用程序中定义一个派生自HwndHost的窗口类,在该窗口类将DLL提供的GDI作为其子窗口,并以委托方式实现GDI窗口中需要处理的消息。
具体过程如下:
a)采用c#定义一个派生自HwndHost的窗口类;
b)采用Managed c++注册一个GDI窗口,实现将.net程序传过来的委托函数转化为c++可处理的函数指针;
c)判断是否注册成功,若为是,创建一个GDI窗口,并返回该窗口的句柄,执行步骤d),否则,返回步骤b);
d)将GDI窗口作为HwndHost类的子窗口,得到一个在WPF中呈现自定义应用程序的GDI子窗口;
e)将GDI子窗口放在WPF窗口上,该GDI子窗口和其它WPF控件一样放在WPF窗口的任意位置;
f)GDI子窗口自定义图形渲染,并实现图形呈现的更新;同时WPF各个界面控件根据WPF消息的机制及渲染机制实现接收、转发用户输入及界面呈现;
g)GDI窗口根据WPF用户输入期望的图形呈现,WPF界面同时将图形的属性变化通过丰富的控件UI反馈给用户。
所述的派生自HwndHost的窗口类中包括窗口过程函数、鼠标构子处理函数和键盘钩子处理函数。
所述的GDI子窗口根据窗口过程函数实现图形呈现的更新。
与现有技术相比,本发明具有以下优点:
1)适用范围广,提供独立于应用GDI窗口dll库,该dll可以很多windows程序中使用;
2)扩展性好,使用Managed c++实现的dll,可以直接在Dot Net c#语言中直接使用,避免使用p/invoke声明大量的API及结构体,也提供了更好的扩展性;
3)操作方便,将窗口过程在应用程序中实现,大大方便应用中各种消息处理过程。
附图说明
图1为本发明实现的流程图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图1所示,一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法,包括;
采用Managed c++创建一个GDI窗口,并提供相应的API,同时生成一个DLL;在WPF应用程序中定义一个派生自HwndHost的窗口类,在该窗口类将DLL提供的GDI作为其子窗口,并以委托方式实现GDI窗口中需要处理的消息。
本发明的具体过程如下:
1)编写好GDI窗口类程序,并调试通过,以dll的方式输出;
2)在WPF程序中实现一个派生自HwndHost的窗口类,在该类中实现一个窗口过程函数,提供窗口类的名称,将窗口过程函数及窗口类名作为参数,调用GDI窗口创建子窗口,并子窗口作为HwndHost的子窗口;
3)在GDI窗口中实现自定义图形渲染,wpf窗口接收鼠标,键盘等各种用户输入,并根据需求转发给GDI窗口,GDI窗口根据从程序中获取的条件更新渲染;图形属性更新通过wpf属性绑定机制及时的反馈在程序界面上。

Claims (4)

1.一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法,其特征在于,包括:
采用Managed c++创建一个GDI窗口,并提供相应的API,同时生成一个DLL;在WPF应用程序中定义一个派生自HwndHost的窗口类,在该窗口类将DLL提供的GDI作为其子窗口,并以委托方式实现GDI窗口中需要处理的消息。
2.根据权利要求1所述的一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法,其特征在于,具体过程如下:
a)采用c#定义一个派生自HwndHost的窗口类;
b)采用Managed c++注册一个GDI窗口,实现将.net程序传过来的委托函数转化为c++可处理的函数指针;
c)判断是否注册成功,若为是,创建一个GDI窗口,并返回该窗口的句柄,执行步骤d),否则,返回步骤b);
d)将GDI窗口作为HwndHost类的子窗口,得到一个在WPF中呈现自定义应用程序的GDI子窗口;
e)将GDI子窗口放在WPF窗口上,该GDI子窗口和其它WPF控件一样放在WPF窗口的任意位置;
f)GDI子窗口自定义图形渲染,并实现图形呈现的更新;同时WPF各个界面控件根据WPF消息的机制及渲染机制实现接收、转发用户输入及界面呈现;
g)GDI窗口根据WPF用户输入期望的图形呈现,WPF界面同时将图形的属性变化通过丰富的控件UI反馈给用户。
3.根据权利要求2所述的一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法,其特征在于,所述的派生自HwndHost的窗口类中包括窗口过程函数、鼠标构子处理函数和键盘钩子处理函数。
4.根据权利要求3所述的一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法,其特征在于,所述的GDI子窗口根据窗口过程函数实现图形呈现的更新。
CN201210517801.6A 2012-12-05 2012-12-05 一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法 Active CN103034490B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210517801.6A CN103034490B (zh) 2012-12-05 2012-12-05 一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210517801.6A CN103034490B (zh) 2012-12-05 2012-12-05 一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法

Publications (2)

Publication Number Publication Date
CN103034490A true CN103034490A (zh) 2013-04-10
CN103034490B CN103034490B (zh) 2016-01-06

Family

ID=48021416

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210517801.6A Active CN103034490B (zh) 2012-12-05 2012-12-05 一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法

Country Status (1)

Country Link
CN (1) CN103034490B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104917832A (zh) * 2015-06-01 2015-09-16 浪潮软件集团有限公司 窗体消息通信方法、WebSocket消息与窗体消息转换方法
CN106547528A (zh) * 2015-09-22 2017-03-29 腾讯科技(深圳)有限公司 一种界面布局方法以及装置
CN111666125A (zh) * 2020-05-29 2020-09-15 上海东普信息科技有限公司 消息提示窗的实现方法、装置、设备和存储介质
CN111752666A (zh) * 2020-06-30 2020-10-09 杭州海康威视数字技术股份有限公司 窗口显示方法、装置和终端
CN115269058A (zh) * 2022-09-29 2022-11-01 广州市保伦电子有限公司 一种wpf资源加载方法及装置
US11756511B1 (en) * 2014-12-03 2023-09-12 Charles Schwab & Co., Inc System and method for causing graphical information to be rendered

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070216944A1 (en) * 2006-03-17 2007-09-20 Canon Kabushiki Kaisha Information processing apparatus and print setting reflection method pertaining to an information processing apparatus
CN101241432A (zh) * 2007-12-11 2008-08-13 金蝶软件(中国)有限公司 一种应用程序界面风格的控制方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070216944A1 (en) * 2006-03-17 2007-09-20 Canon Kabushiki Kaisha Information processing apparatus and print setting reflection method pertaining to an information processing apparatus
CN101241432A (zh) * 2007-12-11 2008-08-13 金蝶软件(中国)有限公司 一种应用程序界面风格的控制方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王德才: "《WPF编程宝典:使用C# 2008和.NET 3.5》", 31 August 2009 *
王德才: "《WPF编程宝典:使用C# 2008和.NET 3.5》", 31 August 2009, article "《与windows窗体的互操作》", pages: 745-764 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11756511B1 (en) * 2014-12-03 2023-09-12 Charles Schwab & Co., Inc System and method for causing graphical information to be rendered
CN104917832A (zh) * 2015-06-01 2015-09-16 浪潮软件集团有限公司 窗体消息通信方法、WebSocket消息与窗体消息转换方法
CN106547528A (zh) * 2015-09-22 2017-03-29 腾讯科技(深圳)有限公司 一种界面布局方法以及装置
CN106547528B (zh) * 2015-09-22 2020-07-14 腾讯科技(深圳)有限公司 一种界面布局方法以及装置
CN111666125A (zh) * 2020-05-29 2020-09-15 上海东普信息科技有限公司 消息提示窗的实现方法、装置、设备和存储介质
CN111752666A (zh) * 2020-06-30 2020-10-09 杭州海康威视数字技术股份有限公司 窗口显示方法、装置和终端
CN111752666B (zh) * 2020-06-30 2023-05-30 杭州海康威视数字技术股份有限公司 窗口显示方法、装置和终端
CN115269058A (zh) * 2022-09-29 2022-11-01 广州市保伦电子有限公司 一种wpf资源加载方法及装置
CN115269058B (zh) * 2022-09-29 2023-01-24 广州市保伦电子有限公司 一种wpf资源加载方法及装置

Also Published As

Publication number Publication date
CN103034490B (zh) 2016-01-06

Similar Documents

Publication Publication Date Title
CN103034490B (zh) 一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法
US10271013B2 (en) Display control method and apparatus
CN106325856B (zh) 一种实现Elasticsearch Dsl规则可视化编辑和数据展现的方法与系统
CN103019682B (zh) 一种通过自定义图形组合在svg中展示数据的方法
CN105518614B (zh) 用于多屏幕应用程序的屏幕录制的方法、设备和计算机可读介质
JP4901261B2 (ja) 高品質なユーザーインターフェイスによる効率的な遠隔表示を行なうシステム
CN104615538B (zh) 一种基于手机界面控件元素的手机应用测试方法
TWI334569B (en) System and method of dual-screen interactive digital television
WO2019114185A1 (zh) 一种app远程控制方法及相关设备
CA2850422C (en) Uncoupled application extensions including interactive digital surface layer for collaborative remote application sharing and annotating
US20130346858A1 (en) Remote Control of Audio Application and Associated Sub-Windows
US20080250424A1 (en) Seamless Window Implementation for Windows Presentation Foundation based Applications
KR20120137396A (ko) 표현 정보를 표시하기 위한 방법, 장치 및 클라이언트 디바이스
CN102413115B (zh) 一种客户端插件系统
CN103049191B (zh) 在拼接墙显示系统上实现鼠标交互操作的方法及装置
TWI702843B (zh) 遠端觸控操作的電視系統
CN105302569A (zh) 一种用于生成异形窗口的方法和装置
CN105446680A (zh) 一种屏幕镜像及其扩展方法、系统及终端设备
CN105262880A (zh) 一种应用于WiFi网络的手机控制演示系统
CN100425023C (zh) 一种显示网络游戏中元素的方法和系统
CN102591646B (zh) 一种同时缩放多个wpf窗体的方法和装置
CN102789379B (zh) 搭建用户界面的方法和装置
CN108415660A (zh) 一种基于屏幕互动购物的分屏多点触摸实现方法
CN109885226B (zh) 一种基于Vue.js实现二级导航菜单的方法
CN102387118B (zh) 一种数据输出方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Zhabei District 200072 Shanghai 777 Canton Road No. 12 lane two building A-27 room

Patentee after: SHANGHAI CREATOO NETWORK TECHNOLOGY CO.,LTD.

Address before: Zhabei District 200072 Shanghai 777 Canton Road No. 12 lane two building A-27 room

Patentee before: Shanghai Chuangtu Network Technology Development Co.,Ltd.

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A Method of interoperability of WPF Form and GDI Form Message Based on Managed C

Effective date of registration: 20230321

Granted publication date: 20160106

Pledgee: Agricultural Bank of China Limited Shanghai Huangpu Sub branch

Pledgor: SHANGHAI CREATOO NETWORK TECHNOLOGY CO.,LTD.

Registration number: Y2023310000076

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Granted publication date: 20160106

Pledgee: Agricultural Bank of China Limited Shanghai Huangpu Sub branch

Pledgor: SHANGHAI CREATOO NETWORK TECHNOLOGY CO.,LTD.

Registration number: Y2023310000076