CN109976749B - 一种绘图过程的继承方法 - Google Patents
一种绘图过程的继承方法 Download PDFInfo
- Publication number
- CN109976749B CN109976749B CN201910243876.1A CN201910243876A CN109976749B CN 109976749 B CN109976749 B CN 109976749B CN 201910243876 A CN201910243876 A CN 201910243876A CN 109976749 B CN109976749 B CN 109976749B
- Authority
- CN
- China
- Prior art keywords
- executing
- control
- message
- inheritance
- operation method
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000008569 process Effects 0.000 title claims abstract description 8
- 230000004044 response Effects 0.000 claims abstract description 7
- 238000011017 operating method Methods 0.000 claims abstract description 5
- 238000003672 processing method Methods 0.000 claims description 5
- 230000000875 corresponding effect Effects 0.000 description 12
- 230000000694 effects Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Digital Computer Display Output (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种绘图过程的继承方法,包括步骤:S1:消息处理系统接收消息,并产生消息对应绘制动作;S2:查找对应控件是否有相应的操作方法;是则执行S3,否则执行S4;S3:该操作方法是否需要继承;是则执行S5,否则执行S6;S4:查找对应控件的父控件是否有相应的操作方法;是则执行S7,否则执行S8;S5:把该操作方法压入后进先出的栈中;S5执行完后执行S4;S6:执行该操作方法;S6执行完后执行S9;S7:该操作方法是否需要继承;是则执行S5,否则执行S8;S8:依次从栈中弹出操作方法并执行;S8执行完后执行S9;S9:结束绘制消息的响应。本发明的方法,使得嵌入式图形编程更加简便,逻辑更清晰,代码复用率更高,从框架上减少编程人员的出错几率。
Description
技术领域
本发明涉及一种绘图过程的继承方法。
背景技术
嵌入式开发一般采用C语言来实现,在嵌入式图形系统领域中,嵌入式图形编程缺少继承的思想,导致相似代码大量重复的出现,会造成代码臃肿,修改或者更新一处bug,则需要修改整个代码文本中所有重复的代码,进而造成人工成本较高,并且以上代码臃肿,造成软件质量低。
再者,在编写控件消息处理函数时,需要每个控件处理函数都需要全面编写,给嵌入式图形系统编程人员带来了繁重的工作,编译出来的程序占用空间较大,需要消耗更多的资源,而且图形风格不容易统一。
发明内容
针对上述技术问题,本发明提供一种绘图过程的继承方法,包括以下步骤:
S1:窗口消息系统接收绘制消息;
S2:查找对应控件是否有相应的操作方法;是则执行S3,是则执行S4;
S3:该操作方法是否需要继承;是则执行S5,否则执行S6;
S4:查找对应控件所继承的控件是否有相应的操作方法;是则执行S7,否则执行S8;
S5:把该操作方法压入后进先出的栈中;S5执行完后执行4;
S6:执行该操作方法;S6执行完后执行S9;
S7:该操作方法是否需要继承;是则执行S5,否则执行S8;
S8:依序从栈中弹出操作方法并执行;S8执行完后执行S9;
S9:结束绘制消息的响应。
进一步地,所述操作方法包括绘制控件在内的对控件的所有处理方法。
进一步地,所述控件的创建时配置有一个消息链表,所述消息链表包括控件继承操作方法的栈、消息处理操作方法集。
进一步地,所述控件操作方法集包括绘图方法在内的对控件的所有处理方法。
与现有技术相比,本发明的有益效果是:
本发明的方法,使得嵌入式图形编程更加简便,逻辑更清晰,代码复用率更高,从框架上减少编程人员的出错几率。
附图说明
图1为本发明方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
见图1,本发明提供一种绘图过程的继承方法,包括以下步骤:
S1:窗口消息系统接收绘制消息;
S2:查找对应控件是否有相应的操作方法;是则执行S3,是则执行S4;
S3:该操作方法是否需要继承;是则执行S5,否则执行S6;
S4:查找对应控件所继承的控件是否有相应的操作方法;是则执行S7,否则执行S8;
S5:记录该操作方法;S5执行完后执行4;
S6:执行该操作方法;S6执行完后执行S9;
S7:该操作方法是否需要继承;是则执行S5,否则执行S8;
S8:执行备份操作方法;S8执行完后执行S9;
S9:结束绘制消息的响应。
进一步地,所述控件的创建时配置有一个消息链表,所述消息链表包括消息继承信息备份区、控件操作方法集、被继承控件、控件添加方法集等内容,控件操作方法集包括创建方法、绘图方法、定时器处理方法等内容。
以下详细介绍本发明的方法,
首先绘图窗口有三个控件,分别为:控件1,控件2,控件3,控件1是控件2的父控件,控件2是控件3的父控件,控件1对绘制消息的响应是用黑色为该控件画一个边框,控件2对绘制消息的响应是在控件中建个标题栏,控件3对绘制消息的相应为继承的方式在控件内写一行字。
若控件2,控件3对绘制消息的响应是继承的,控件1不继承,根据以上的方法,则控件2绘制消息的效果是:生成一个带黑的边框和标题栏的控件;控件3对绘制消息的相应效果是:生成一个带黑的边框和标题栏并且控件中有一行字的控件。
若控件1,控件2不继承,控件3不继承,根据以上的方法,控件2绘制消息的效果是:生成一个带标题栏的控件;控件3对绘制消息的相应效果是:生成一个控件中有一行字的控件。
以下介绍本发明的方法实现的具体代码编译过程:
控件的操作方法对应相应的消息,控件消息码定义方法:
bit0~23:用于定义消息,其中0不使用,1~65535由系统和控件使用,65536以上由用户使用。
bit24~31:用于定义一些消息控制域,仅定义消息处理函数表时使用,发出和接收到的消息,都不包含这些内容。
bit31,定义该消息的继承方式。
0:none方式,仅执行最低级子节点上的消息处理函数,如果没有定义,才从父节点查找,直到控件系统默认。
1:继承式,先执行父节点定义的消息处理函数,父节点没有定义的话,再往前找,直到控件系统默认,最后执行自己。
close消息的hwnd和param2比较特殊:MSG_CLOSE自带继承属性,那么调用用户的消息处理
函数时,窗口本身已经被销毁,消息的hwnd成员将被清除
发送MSG_CLOSE消息时,param2不用考虑,但调用用户定义的消息处理函数,该函数收到
的消息中,param2==hwnd->Private,这是系统添加的。
MSG_CLOSE:(MSG_ADOPT_NORMAL+0x0009)窗口关闭消息,Param1:忽略;
MSG_DESTROY:0x000A 窗口销毁消息
MSG_QUIT:0x000B 窗口退出消息
MSG_NOTIFY:0x000C 通知消息;Param1:控件Id(L16),通知码(H16);Param2:控件HWND.
MSG_SETFOCUS:0x000D 窗口获得焦点;Param1:忽略;Param2:忽略;
MSG_KILLFOCUS:0x000E 窗口失去焦点;Param1:忽略;Param2:忽略;
MSG_LBUTTON_DOWN:0x0100 鼠标左键按下;Param1:忽略;Param2:x坐标(L16),y坐标(H16).
MSG_LBUTTON_UP:0x0101 鼠标左键弹起;Param1:忽略;Param2:x坐标(L16),y坐标(H16).
MSG_RBUTTON_DOWN:0x0102 鼠标右键按下;Param1:忽略;Param2:x坐标(L16),y坐标(H16).
MSG_RBUTTON_UP:0x0103 鼠标右键弹起;Param1:忽略;Param2:x坐标(L16),y坐标(H16).
MSG_MBUTTON_DOWN:0x0104 鼠标中键按下;Param1:忽略;Param2:x坐标(L16),y坐标(H16).
MSG_MBUTTON_UP:0x0105 鼠标中键弹起;Param1:忽略;Param2:x坐标(L16),y坐标(H16).
MSG_MOUSE_MOVE:0x0106 鼠标移动;Param1:鼠标按键状态;Param2:x坐标(L16),y坐标(H16).
MSG_NCLBUTTON_DOWN:0x0107 非客户区鼠标左键按下;Param1:忽略;Param2:x坐标(L16),y坐标(H16).
MSG_NCLBUTTON_UP:0x0108 非客户区鼠标左键弹起;Param1:忽略;Param2:x坐标(L16),y坐标(H16).
MSG_NCRBUTTON_DOWN:0x0109 非客户区鼠标右键按下;Param1:忽略;Param2:x坐标(L16),y坐标(H16).
MSG_NCRBUTTON_UP:0x010A 非客户区鼠标右键弹起;Param1:忽略;Param2:x坐标(L16),y坐标(H16).
MSG_NCMBUTTON_DOWN:0x010B 非客户区鼠标中键按下;Param1:忽略;Param2:x坐标(L16),y坐标(H16).
MSG_NCMBUTTON_UP:0x010C 非客户区鼠标中键弹起;Param1:忽略;Param2:x坐标(L16),y坐标(H16).
MSG_NCMOUSE_MOVE:0x010D 非客户区鼠标移动;Param1:鼠标按键状态;Param2:x坐标(L16),y坐标(H16).
MSG_SETATTR 0x010E:窗口属性设置;
MSG_KEY_DOWN:0x0120 键盘按下;高16位(H16)WinID,Param1:按键值(L16);Param2:事件产生的时间(毫秒单位)。
MSG_KEY_UP:0x0121键盘弹起;Param1:按键值(L16);Param2:事件产生的时间(毫秒单位)。
MSG_KEY_PRESS:0x0122
MSG_TOUCH_DOWN:0x0130 触摸屏触摸下触摸点
MSG_TOUCH_UP:0x0131 触摸屏离开触摸点
MSG_TOUCH_MOVE:0x0132
MSG_NCTOUCH_DOWN:0x0133
MSG_NCTOUCH_UP:0x0134
MSG_NCTOUCH_MOVE:0x0135
MSG_TIMER_START:0x0140 定时器消息:Param1:定时Id;Param2:定时器对象。
MSG_TIMER_STOP:0x0141 定时器消息:Param1:定时Id;Param2:定时器对象。
MSG_GET_POS:0xF000进度条消息
MSG_ProcessBar_SETDATA:0x2100 设置数据:Param1:进度条数量结构指针;Param2:忽略;返回:忽略。
MSG_ProcessBar_GETDATA:0x2101 获得数据:Param1:进度条数据结构指针;Param2:忽略;返回:忽略。
MSG_ProcessBar_SETRANGE:0x2102 设置量程:Param1:量程值;Param2:忽略;返回:忽略。
MSG_ProcessBar_GETRANGE:0x2103 获得量程:Param1:忽略;Parame2:忽略;返回:量程值。
MSG_ProcessBar_SETPOS:0x2104 设置当前位置:Param1:当前位置;Param2:忽略;返回:忽略。
MSG_ProcessBar_GETPOS:0x2105 获得当前位置:Param1:忽略;Param1:忽略;返回:当前位置.ListBox消息。
MSG_ListBox_ADDSTRING:0x2200 增加一个字符项;Param1:项目索引;Param2:字符指针;返回:实际项目索引。
MSG_ListBox_DELSTRING:0x2201 删除一个字符项;Param1:项目索引;Param2:忽略;返回:忽略。
MSG_ListBox_SETCURSEL:0x2202 设置当前选择项;Param1:项目索引;Param2:忽略;返回:忽略。
MSG_ListBox_GETCURSEL:0x2203 获得当前选择项;Param1:忽略;Param2:忽略;返回:当前选择项索引。
MSG_ListBox_SETTOPINDEX:0x2204 设置顶部首个可见项;Param1:项目索引;Param2:忽略;返回:忽略。
MSG_ListBox_GETTOPINDEX:0x2205 获得顶部首个可见项;Param1:忽略;Param2:忽略;返回:顶部首个可见项索引。
MSG_ListBox_GETCOUNT:0x2206 获得整个列表框的项目数量;Param1:忽略;Param2:忽略;返回:项目数量。
MSG_ListBox_RESETCONTENT:0x2207 删除列表框所有项目;Param1:忽略;Param2:忽略;返回:忽略。
MSG_ListBox_GETTEXTLEN:0x2208 获得指定项目的文字字节数;Param1:项目索引;Param2:忽略;返回:忽略。
MSG_ListBox_GETTEXT:0x2209 获得指定项目的文字;Param1:项目索引;Param2:输出缓冲区;返回:忽略。
MSG_ListBox_SETITEMHEIGHT:0x220A 设置列表框项目高度;Param1:高度值(像素单位);Param2:忽略;返回:忽略。
MSG_ListBox_GETITEMHEIGHT:0x220B 获得列表框项目高度;Param1:忽略;Param2:忽略;返回:高度值(像素单位)。
MSG_ListBox_SETITEMDATA:0x220C 设置列表框项目数据;Param1:项目索引;Param2:项目数值;返回:忽略。
MSG_ListBox_GETITEMDATA:0x220D 获得列表框项目数据;Param1:项目索引;Param2:忽略;返回:项目数值。
MSG_WM_USER:0x10000用户定义的消息起始代码控件通知码。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (4)
1.一种绘图过程的继承方法,其特征在于:包括以下步骤:
S1:窗口消息系统接收绘制消息;
S2:查找对应控件是否有相应的操作方法;是则执行S3,否则执行S4;
S3:该操作方法是否需要继承;是则执行S5,否则执行S6;
S4:查找对应控件的父控件是否有相应的操作方法;是则执行S7 ,否则执行S8;
S5:把该操作方法压入后进先出的栈中;S5执行完后执行S4;
S6:执行该操作方法;S6执行完后执行S9;
S7:该操作方法是否需要继承;是则执行S5,否则执行S8;
S8:依次从栈中弹出操作方法并执行;S8执行完后执行S9;
S9:结束绘制消息的响应。
2.根据权利要求1的继承方法,其特征在于:所述操作方法包括绘制控件在内的对控件的所有处理方法。
3.根据权利要求1的继承方法,其特征在于:所述控件在创建时配置有一个消息链表,所述消息链表包括消息继承信息备份区、控件操作方法集、被继承控件、控件添加方法集。
4.根据权利要求3的继承方法,其特征在于:所述控件操作方法集包括绘图方法在内的对控件的所有处理方法的内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910243876.1A CN109976749B (zh) | 2019-03-28 | 2019-03-28 | 一种绘图过程的继承方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910243876.1A CN109976749B (zh) | 2019-03-28 | 2019-03-28 | 一种绘图过程的继承方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109976749A CN109976749A (zh) | 2019-07-05 |
CN109976749B true CN109976749B (zh) | 2024-01-16 |
Family
ID=67081234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910243876.1A Active CN109976749B (zh) | 2019-03-28 | 2019-03-28 | 一种绘图过程的继承方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109976749B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5564048A (en) * | 1994-06-15 | 1996-10-08 | Lucent Technologies Inc. | Object-oriented functionality class library for use in graphics programming |
US5673401A (en) * | 1995-07-31 | 1997-09-30 | Microsoft Corporation | Systems and methods for a customizable sprite-based graphical user interface |
US6157944A (en) * | 1997-05-14 | 2000-12-05 | Citrix Systems, Inc. | System and method for replicating a client/server data exchange to additional client notes connecting to the server |
JP2004303080A (ja) * | 2003-03-31 | 2004-10-28 | Clarion Co Ltd | 通知情報表示方法及びアプリケーションプログラム |
CN1987779A (zh) * | 2006-12-28 | 2007-06-27 | 上海广电(集团)有限公司中央研究院 | 基于c语言微型操作系统的图形处理方法 |
CN101071380A (zh) * | 2007-06-27 | 2007-11-14 | 中兴通讯股份有限公司 | 一种图形用户界面的截取和重现方法 |
CN101421761A (zh) * | 2003-10-23 | 2009-04-29 | 微软公司 | 视件和场景图接口 |
CN101976190A (zh) * | 2010-09-27 | 2011-02-16 | 北京神州泰岳软件股份有限公司 | 基于DirectUI的界面生成系统及方法 |
CN103164204A (zh) * | 2011-12-15 | 2013-06-19 | 北京新媒传信科技有限公司 | 基于Symbian系统的用户界面的生成方法和系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6404433B1 (en) * | 1994-05-16 | 2002-06-11 | Apple Computer, Inc. | Data-driven layout engine |
US6957391B2 (en) * | 2001-05-31 | 2005-10-18 | International Business Machines Corporation | Application program interface that can maintain similar look and feel of a displayed image regardless of whether the interface is platform dependent or platform independent |
US8682936B2 (en) * | 2010-12-15 | 2014-03-25 | Microsoft Corporation | Inherited entity storage model |
-
2019
- 2019-03-28 CN CN201910243876.1A patent/CN109976749B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5564048A (en) * | 1994-06-15 | 1996-10-08 | Lucent Technologies Inc. | Object-oriented functionality class library for use in graphics programming |
US5673401A (en) * | 1995-07-31 | 1997-09-30 | Microsoft Corporation | Systems and methods for a customizable sprite-based graphical user interface |
US6157944A (en) * | 1997-05-14 | 2000-12-05 | Citrix Systems, Inc. | System and method for replicating a client/server data exchange to additional client notes connecting to the server |
JP2004303080A (ja) * | 2003-03-31 | 2004-10-28 | Clarion Co Ltd | 通知情報表示方法及びアプリケーションプログラム |
CN101421761A (zh) * | 2003-10-23 | 2009-04-29 | 微软公司 | 视件和场景图接口 |
CN1987779A (zh) * | 2006-12-28 | 2007-06-27 | 上海广电(集团)有限公司中央研究院 | 基于c语言微型操作系统的图形处理方法 |
CN101071380A (zh) * | 2007-06-27 | 2007-11-14 | 中兴通讯股份有限公司 | 一种图形用户界面的截取和重现方法 |
CN101976190A (zh) * | 2010-09-27 | 2011-02-16 | 北京神州泰岳软件股份有限公司 | 基于DirectUI的界面生成系统及方法 |
CN103164204A (zh) * | 2011-12-15 | 2013-06-19 | 北京新媒传信科技有限公司 | 基于Symbian系统的用户界面的生成方法和系统 |
Non-Patent Citations (1)
Title |
---|
交互绘图对传统模式的继承与变革;董怀武;《武汉交通科技大学学报》;第24卷(第1期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109976749A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102915297B (zh) | 底层网格结构以及表的动画 | |
CN1655120B (zh) | 在集成开发环境中作为设计器主宿应用程序的方法和系统 | |
US8176465B2 (en) | Pluggable model elements | |
CN105094832A (zh) | 一种所见即所得的动态生成用户界面的方法和系统 | |
US8504930B1 (en) | User interface substitution | |
CN108228253A (zh) | 一种app构建方法及系统 | |
CN104216752A (zh) | 一种基于窗口的信息加载方法及装置 | |
MX2008000515A (es) | Transiciones fluidas entre animaciones. | |
US20050007383A1 (en) | System and method of visual grouping of elements in a diagram | |
US20120030631A1 (en) | Tree control with enhanced hierarchy visibility | |
CN101923434B (zh) | 一种应用图标的排版方法、系统移动终端 | |
CN112363794A (zh) | 一种前端列表类组件的渲染方法及电子设备 | |
CN112445564B (zh) | 界面显示方法及电子设备、计算机可读存储介质 | |
CN102662591B (zh) | 数据处理方法和装置 | |
CN103035031A (zh) | 面向电网运行监控的三维人机交互显示控制方法 | |
CN110955850A (zh) | 一种组件化树形控件的处理方法 | |
CN103513977A (zh) | 一种群成员列表的展示方法和装置 | |
WO2013109858A1 (en) | Design canvas | |
CN109298819B (zh) | 选择对象的方法、装置、终端及存储介质 | |
CN109976749B (zh) | 一种绘图过程的继承方法 | |
CN112188292B (zh) | 一种基于安卓操作系统的电视桌面构建方法 | |
CN110990431A (zh) | 一种实现中国地图和折线图数据同步联动轮播的方法 | |
CN107025040B (zh) | 基于oled屏幕的显示设置方法、系统及图形用户界面 | |
CN113268235A (zh) | 一种智能手表的云端表盘设计方法 | |
US9075500B2 (en) | Method and system for presenting and navigating embedded user interface elements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |