CN101253474A - 用于命令的方法和计算机可读介质 - Google Patents
用于命令的方法和计算机可读介质 Download PDFInfo
- Publication number
- CN101253474A CN101253474A CNA2006800314375A CN200680031437A CN101253474A CN 101253474 A CN101253474 A CN 101253474A CN A2006800314375 A CNA2006800314375 A CN A2006800314375A CN 200680031437 A CN200680031437 A CN 200680031437A CN 101253474 A CN101253474 A CN 101253474A
- Authority
- CN
- China
- Prior art keywords
- order
- computer
- input
- binding
- command
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
在此描述主题的诸方面涉及产生和传播命令。在这些方面中,图形用户界面的元素可包括将姿势与命令相关联的输入绑定。当收到一姿势时,根据具有焦点的元素产生命令。此外,图形用户界面的元素也可定义在收到命令时要调用的方法。当收到事件或命令时,可响应于该事件或命令而遍历在图形用户界面上能表示的元素的分层数据结构。
Description
背景技术
当用户打开应用程序时,用户有权访问允许用户执行该应用程序中的各种功能的命令。例如,用户能够从该应用程序中剪切或复制文本或其它对象,并且将该文本或其它对象粘贴到另一应用程序中。
这些命令可用各种方式来调用。例如,用户可选择菜单工具条并导航通过菜单以找到剪切或复制命令。作为另一示例,用户可输入快捷键(例如[控制键]-x)来从应用程序中剪切对象。作为再一示例,用户可用鼠标选择文本并将该文本拖曳到另一位置,从而启动剪切和粘贴命令。
随着需要使用命令的输入设备和应用程序的多样化,实现与使用命令体系结构正变得更为复杂。这种复杂性正在增加应用程序开发者和其它人在开发使用命令的程序时需要完成的工作。
发明内容
简言之,在此所述主题的诸方面涉及产生和传播命令。在这些方面中,图形用户界面的元素可包括将一姿势(gesture)与命令相关联的输入绑定。当收到姿势时,根据哪个元素具有焦点产生命令。此外,图形用户界面的元素也可定义在收到命令时要调用的方法。当收到事件或命令时,响应于该事件或命令可以遍历能在图形用户界面上表示的元素的分层数据结构。
提供本概要简要地标识要在下面的具体实施方式中进一步描述的主题的一些方面。本概要不是要标识要求保护的主题的关键或本质特征,也不旨在限制要求保护的主题的范围。
短语“在此描述的主题”指在具体实施方式中描述的主题,除非另有明确指示。术语“方面”应解读为“一或多个方面”。标识在具体实施方式中描述的主题并不旨在标识要求保护的主题的关键或本质特征。
上述诸方面和其它方面在结合附图阅读下列具体实施方式而变显然。
附图说明
图1是可结合在此所述主题的诸方面的计算机系统的框图;
图2A-6B是概括地表示可根据在此所述主题的诸方面运行的示例性应用编程接口的框图;
图7和8是概括地表示根据在此所述主题的诸方面,编译器或解释器如何将一或多个接口转换成一或多个其它接口的框图;
图9是表示根据在此所述主题的诸方面用作控件模板的滚动条控件的框图;
图10是概括地表示根据在此所述主题的诸方面的可视树的框图;
图11是概括地表示根据在此所述主题的诸方面可在响应于收到InputEvent(输入事件)而产生命令时发生的动作的流程图;
图12是概括地表示根据在此所述主题在执行与命令相关联的动作时发生的动作的流程图;以及
图13是概括地表示根据在此所述主题的诸方面可在其中运行的环境的框图。
具体实施方式
示例性操作环境
图1例示合适计算系统环境100的示例,在此所述主题的诸方面可在该环境上实现。计算系统环境100仅是合适计算环境的一个示例,并且不非暗示对在此所述主题的诸方面的使用范围或功能的任何限制。也不应将计算环境100解释为对在示例性操作环境100中例示的任一组件或其组合有任何信赖性或必要性。
在此所述主题的诸方面可与众多其它通用或专用计算系统环境或配置一起运行。适于和在此所述主题的诸方面一起使用的众知计算系统、环境和/或配置的示例包括但不限于,个人计算机,服务器计算器,手持或膝上型设备,多处理器系统,基于微控制器的系统,机顶盒,可编程消费电子产品,网络PC,小型机,大型机,包括任何上述系统或设备的分布式计算环境,等等。
在此所述主题的诸方面可在由计算机正在执行的计算机可执行指令如程序模块的一般语境中描述。一般而言,程序模块包括例程,程序,对象,组件,数据结构等,它们执行特定的任务或实现特定抽象数据类型。在此所述主题的诸方面也可在分布式计算环境中实践,其中任务由通过通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可位于包括存储器存储设备的本地和远程两者的计算机存储介质中。
参考图1,用于实现在此所述主题的诸方面的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可包括但不限于处理单元120,系统存储器130和系统总线121,系统总线121将包括系统存储器在内的各种系统组件耦合到处理单元120。系统总线121可以是任何若干类型的总线结构,包括存储器总线或存储器控制器,外设总线以及使用任何各种总线体系结构的局部总线。作为示例但非限制,这样的系统结构包括工业标准体系结构(ISA)总线,微通道体系结构(MCA)总线,增强型ISA(EISA)总线,视频电子标准协会(VESA)局部总线,以及外围组件互连(PCI)总线,也称为夹层总线。
计算机110一般包括各种计算机可读介质。计算机可读介质可以是任何能由计算机110访问的可用介质,并且包括易失性与非易失性介质和可移动与不可移动介质两者。作为示例但非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括易失性与非易失性、可移动与不可移动介质,它们以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术来实现。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者任何可用于存储所需信息并且能由计算机110访问的任何其它介质。通信介质一般体现为在经调制数据信号诸如载波或其它传输机制中的计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。术语“经调制的数据信号”表示一种信号,具有用将信息编码在该信号中的方式设置或改变的一或多个特性。作为示例,但非限制,通信介质包括线接介质如线接网络或直接线连接,以及无线介质,诸如声音、RF、红外和其它无线介质。上述任意组合也应包括在计算机可读介质的范围内。
系统存储器130包括易失性和/或非易失性存储形式的计算机存储介质,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS),包含帮助计算机110内的元素之间诸如在启动时传送信息的基本例程,通常存储在ROM 131中。RAM 132一般包含处理单元120能立即访问和/或当前正在操作的数据和/或程序模块。作为示例但非限制,图1例示了操作系统134,应用程序135,其它程序模块136和程序数据137。计算机110也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1例示了读写不可移动非易失性磁介质的硬盘驱动器140,读写可移动非易失性磁盘152的磁盘驱动器151,以及读写可移动非易失性光盘156如CD ROM或其它光介质的光盘驱动器155。可在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,磁带盒、闪存卡、数字多功能盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器141一般通过不可移动存储器诸如接口140连接到系统总线121,而磁盘驱动器151和光盘驱动器155一般通过可移动存储器接口诸如接口150连接到系统总线121。
上述且在图1中例示的驱动器及其相关联的计算机存储介质为计算机110提供计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,硬盘驱动器141例示为存储操作系统144,应用程序145,其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。操作系统144,应用程序145,其它程序模块146和程序数据147在此给出不同的数字以说明至少它们是不同的复制。用户可通过诸如键盘162和定点设备161(通常称为鼠标、轨迹球或触摸板)的输入设备将命令和信息输入到计算机20。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、卫星天线、扫描仪、手持式PC或其它手写板的触摸感应屏幕等等。这些和其它输入设备通常通过耦合到系统总线的用户输入接口160连接到处理单元120,但可通过其它接口和总线结构诸如并行端口、游戏端口或通用串行总线(USB)来连接。监示器191或其它类型的显示设备也通过接口诸如视频接口190连接到系统总线121。除了监示器,计算机还可包括其它外围输出设备诸如扬声器197和打印机196,它们可通过输出外围接口190来连接。计算机110可使用至一或多个远程计算机诸如远程计算机180的逻辑连接在网络化环境中运行。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它普通网络节点,并且通常包括上面相对于计算机110所述的许多或所有元素,尽管仅在图1中示出存储器存储设备181。图1所示的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络。这样的连网环境在办公室、企业级计算机网络、内联网和因特网中是常见的。
当在LAN连网环境中使用时,计算机110通过网络接口或适配器170连接到LAN 171。当在WAN连网环境中使用时,计算机110一般包括调制解调器172或者其它在WAN 173如因特网上建立通信的装置。调制解调器172,可以是内置或外置的,可通过用户输入接口160或其它合适的机制连接到系统总线121。在网络化环境中,相对于计算机110所示的程序模块或其部分可存储在远程存储器存储设备中。作为示例但非限制,图1例示远程应用程序程序185驻留在存储器设备181上。将认识到,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其它装置。
接口
编程接口(或更简单地,接口)可视为允许一或多个代码段与由一或多个其它代码段提供的功能性通信或访问这些功能的任何机制、过程或协议。作为替代,程序接口可视为能够以通信方式耦合到其它组件的一或多个机制、方法、功能调用、模块等的系统组件的一或多个机制、方法、功能调用、模块、对象等。术语“代码段”旨在包括一或多个指令或代码行,例如可包括代码模块、对象、子例程、函数等等,而无论应用于该术语的代码段是否单独编译,无论代码段是作为源、中间还是目标代码提供,无论代码段是在运行时系统或过程内使用,无论它们位于相同或不同机器中还是跨多个机器分布,也无论代码段所代表的功能性完全由软件、完全由硬件还是由软硬件组合来实现。
概念上,编程接口一般可视如图2A或图2B所示的那样。图2A例示接口205为一个管道,第一和第二代码段通过该管道通信。图2B例示接口为包括接口对象210和215(它们可以是第一和第二代码段的一部分,也可以不是),它们使系统的第一和第二代码段能够经由介质220通信。在图2B的视图中,可以将接口对象210和215视为同一系统的独立接口,并且也可以考虑将对象210和215加上介质220构成接口的情况。尽管图2A和2B示出双向流和流每侧的接口,但某些实现可仅具有一个方向的信息流(或如下所述没有信息流),或者可仅在一侧具有接口对象。作为示例但非限制,诸如应用编程接口(API)、入口点、函数、子例程、远程过程调用以及组件对象模型(COM)接口等术语包含在编程接口的定义之内。
这样的编程接口的诸方面可包括:第一代码段传送信息(其中“信息”在此以其最宽泛的含义来使用,并包括数据、命令、请求等)到第二代码段的方法;第二代码段接收信息的方法;以及信息的结构、顺序、句法、组织、模式、时序和内容。在这点上,基础的传输介质本身对于接口的操作并不重要,无论介质是有线的、无线的还是两者的组合,只要信息是按接口定义的方式来传输即可。在某些情形中,信息可在常规意义上单向或双向传递,如信息传送或者可经由其它机制(例如,放在独立于代码段之间的信息流的缓冲器、文件内等),或者不存在信息传送,如当一个代码段简单地访问由第二代码段执行的功能性时。任何或所有这些方面在某一给定情形中是重要的,例如,取决于代码段是作为松耦合还是紧耦合配置的系统的一部分,因此该列表应视为说明性而非限制性的。
编程接口的这个概念是本领域技术人员已知的,并且由上述详细描述而显见。然而,存在实现编程接口的其它方法,并且除非明确排除,这些方法也由在本说明书末尾阐述的权利要求书所包含。这些其它方法可比图2A和2B的简单视图更高级或更复杂,但它们仍执行相似的功能来完成相同的总结果。下面是编程接口的一些说明性的替换实现。
A.分解
从一个代码段到另一个的通信可间接地通过将通信分成多个离散的通信来完成。这在图3A和3B中示出。如图所示,一些接口可以按照功能的可分集来描述。因而,图2A和2B的接口功能可被分解以实现相同的结果,就象可以在数学上24可分解为2乘2乘3乘2那样。因此,如图3A所示,接口205提供的功能可被细分,以将接口的通信转换成多个接口305、306、307等等,同时完成相同的结果。
如图3B所示,由接口210提供的功能可被划分成多个接口310、311、312等等,同时完成相同的结果。同样,第一代码段接收信息的第二代码段的接口215可被分解成多个接口320、321、322等等。当分解时,包括在第一代码段中的接口数不必匹配包括在第二代码段中的接口数。在图3A和3B的任一情形中,接口205和210的功能实质分别保持与图2A和2B的相同。
接口的分解也可遵循结合、交换和其它数学性质,使得分解会难以识别。例如,操作的顺序不重要,因此由接口执行的功能也可在到达该接口之前由另一代码片断或接口完成,或者由系统的独立组件执行。而且,编程领域的技术人员会认识到存在有各种方法能作出实现相同结果的不同功能调用。
B.重新定义
在一些情形中,有可能忽略、添加或重新定义编程接口的某些方面(例如参数),同时仍完成所要的结果。这在图4A和4B中例示。例如,假设图2A的接口205包括函数调用Square(input,precision,output),它包括三个参数,input(输入),precision(精度)和output(输出),并且是从第一代码段发到第二代码段。如果中间参数precision在如图4A所示的给定情形中没有涉及,就可忽略它甚至用meaningless(无意义)(在该情形中)的参数来代替它。也可添加没有涉及的一additional(附加)参数。在任一事件中,可实现square(平方)的功能性,只要在由第二代码段平方输入之后返回输出即可。
Precision对于计算系统的某个下游或其它部分可以是非常有意义的参数;然而,一旦认识到精度对于计算平方的有限目的而言不是必须的,则可以替代或忽略它。例如,并非传递有效precision值,而可在对结果没有不利影响的情况下传递诸如生日的无意义值。同样,如图4B所示,接口210由接口210’代替,被重新定义为忽略或添加参数到该接口。接口215可同样被重新定义为接口215’,重新定义为忽略不必要的参数,或者可在其它地方处理的参数。正如可以看到的,在一些情形中,编程接口可包括诸如参数的各方面,这些方面对于某种目的而言是不必要的,因此可以忽略它们或对其进行重新定义,或者为其它目的而在其它地方对其进行处理。
C.内联编码
合并两个独立的代码模块的部分或全部功能性也是可行的,使得它们之间的“接口”改变形式。例如,图2A和2B的功能性可分别转换成图5A和5B的功能性。在图5A中,先前图2A的第一和第二代码段被合并成包含它们两者的模块。在这种情形中,代码段仍可彼此通信,但接口可被调整成更适于单个模块的形式。因而例如,形式上的Call(调用)和Return(返回)语句不再需要,但依据接口205的相似处理或响应仍然有效。同样,在图5B中所示,来自图2B的接口215的部分(或全部)可被内联地写入接口210以形成接口210”。如图所示,接口215被分成215A”和215B”,而接口部分215A”已被内联于接口210编码以形成接口210”。
对于一个具体的示例,考虑图2B的接口210可执行函数调用square(input,output)的情况,该调用由接口215接收,在处理由第二代码段通过input的值(要平方它)之后,通过output传递回平方后的结果。在这样一种情形中,由第二代码段执行的处理(平方input)可以由第一代码段执行而无需调用该接口。
D.分离
从一个代码段到另一个的通信可通过将通信分成多个离散的通信来间接完成。这在图6A和6B中示出。如图6A所示,提供一或多个中间件(分离接口,由于它们从原始接口分离功能性和/或接口功能),以将第一接口605上的通信转换成使它们遵循的不同接口,在此例中为接口610、615和620。这可以在例如存在设计为与根据第一接口605的协议与诸如操作系统通信的基于安装的应用程序,但后来改变该操作系统以使用不同的接口,在此例中为接口610、615和620。可以看到,由第二代码段使用的原始接口被改变,使得它不再与由第一代码段使用的接口兼容,因此使用中介来使新旧接口兼容。
同样,如图6B所示,可以引入第三个代码段,它具有分离接口635以接收来自接口630的通信,并具有分离接口640以传送接口功能性到例如接口650和655,它们被重新设计为与640一起工作,但提供相同的功能结果。同样,635和640可一起工作以将图2B的接口210与215的功能性翻译给新的操作系统,同时提供相同或相似的功能结果。
E.重写
又一种可能的变体是动态重写上述代码以使用实现相同总体结果的其它内容来替代该接口功能。例如,存在这样一种系统,在其中向执行环境中(诸如由.Net框架、Java运行时间环境、或其它类似运行时间型环境提供的)的即时(JIT)编译器或解释器提供中间语言(例如Microsoft IL、Java、ByteCode等)。可以写入JIT编译器以使其能够将来自第一代码段的通信动态地转换至第二代码段,也就是使它们与第二代码段(原始的或不同的第二代码段)可能要求的不同接口一致。这在图7和8所示。如图7中可见,该方法与上述分离情景相似。这可以在这样的情景中完成,例如,其中基于安装的应用程序被设计为与根据第一接口协议的操作系统通信,但后来该操作系统被改变为使用不同的接口。可使用JIT编译器来使来自基于安装的应用程序的通信在运行中遵循该操作系统的新接口。如图8所示,这种动态重新接口的方法可应用于动态分解,或者也可改变接口。
还应注意,上述用于经由可选实施方式的接口来实现相同或相似结果的情况也可按不同方式、串行地和/或并行地、或与其它插入代码组合。因此,以上示出的可选实施方式并不相互排斥并且可以相互混合、匹配并组合以产生与图2A和2B示出的一般情况相同或等效的情况。还要注意,如同大多数编程构造一样,存在本文未描述但可由本发明精神和范围代表的实现接口的相同或相似功能的其它类似方法,即应该注意到构成该接口价值的接口代表表示了至少部分功能性,并实现了至少部分的有利结果。
命令
可在各种情景中使用命令。例如,可在编辑中使用命令来剪切、复制、粘贴、添加文本属性诸如粗体、斜体和下划线等等。
这些命令可从各种源产生。例如,剪切命令可响应于从菜单选择剪切命令、输入快捷键(例如[控制键]-x)、在手持式设备上某个动作(例如轻击)、语音命令、通过其它输入设备、通过其它程序代码等等而产生。
命令可在应用于不同对象时意味着不同的内容。例如,在文本框中,剪切命令可以意味着剪切所选择的文本,而在带有选择行的数据格栅中,剪切命令可表示删除整行。
如另一情景,可在控件模板中使用命令。例如,在图9所示的滚动条905中,可以有行上移按钮910,行下移按钮920和滑块915。控件模板可允许用户或软件开发者控制控件的观感而不改变控件的功能性。例如,在标记语言中,软件或页面设计者可将滚动条的模板定义为:
<DockPanel>
<LineUpButton Command=″LineUp″/>
<Track/>
<LineDownButton Command=″LineDown″/>
</DockPanel>
每当激活滚动条905的按钮,就产生合适的命令。滚动条905不必知道是什么实际产生行上移或行下移命令。例如,该命令可以由用户选择按钮910或920之一、由语音识别软件、由键盘输入等等来产生。
可使用命令的另一情景是应用程序开发者希望只有动作或事件发生就执行动作或方法。应用程序开发者可通过将命令与控件类按钮上的事件或动作相关联而使其发生。例如,文件对象可定义FileOpen(文件打开)和FileEdit(文件编辑)动作。FileOpen动作可在用户压下回车或者双击所选择项来执行。使用命令可允许应用程序开发者例如将UI逻辑与商务逻辑分离。
命令可通过ICommand接口来实现。ICommand接口可包括Execute(执行)方法和CanExecute(能执行)方法。Execute方法可允许组件定义当执行命令时要采取的动作。例如,如果在文本框具有焦点时执行剪切命令,则文本框组件可将所选择文本剪切到缓冲区中。
命令可能需要参数来执行其动作。例如,FileOpen或Print(打印)命令需要文件名来正确地操作。在一实施例中,Execute方法接受参数或类型对象的类属数据,其中命令的使用者与创建者定义参数或类属数据的含义。如果命令不需要参数,则它丢弃任何传递的参数。
CanExecute方法指示命令是否可执行。例如,如果焦点设置于滚动条,则剪切命令不能执行。组件可调用CanExecute方法来确定它能否执行Execute方法。CanExecute方法也可接受若不需要就可忽略的参数。
此外,事件可与ICommand接口相关联。事件可指示命令的执行能力何时已经改变时,或者根据ICommand接口实例化的对象何时应当调用CanExecute以确定它是否仍可执行。例如,该对象随后可以启用或禁用与其相关联的可视元素,以指示其当前的执行能力。
用于实现ICommand接口的示例性接口包括:
public interface ICommand
{
void Execute(object params);
bool CanExecute(object params);
event CanExecuteChangedEvent CanExecuteChanged;
}
在此接口中,ICommand.Execute定义在执行Command(命令)时应当执行的方法,ICommand.CanExecute返回布尔值并且指示Command是否可执行,并且每当Command的执行能力改变时由该Command引发CanExecuteChangedEvent(能执行改变事件)。
可使用接口的对象的一个例子是表单上的按钮。该按钮可与提交的命令相关联。例如,当点击按钮时,希望提交信息给服务器。为提供关于这是否允许的指示,该按钮可基于在某一特定时间点是否可提交信息来启用或禁用。例如,基于要提交的所有数据是否可用(例如,已经填充在表单上的),到服务器的连接是否可用,表单是否连接到服务器等等,信息能够或者不能够被提交。如果到服务器的连接改变,可以引发CanExecuteChangedEvent,从而该按钮可改变其启用/禁用状态。
上述按钮是CommandSource(命令源)的一个例子(下文称为“CommandSource”)。一般而言,CommandSource可包括能够调用Command的任何元素。其它示例性CommandSource包括其它元素,包括MenuItem(菜单项)、ListBoxItem(列表框列)、Hyperlink(超链接)和其它控件。CommandSource类的示例性接口包括:
Public class CommandSource
{
ICommand Command;
Object CommandParameter;
IInputElement CommandTarget;
}
只要调用CommandSource,CommandSource可通过调用ICommand.Execute来调用一Command。CommandSource可定义要被调用意味着什么。例如,诸如按钮的CommandSource可在点击按钮时调用Command。CommandSource也可向ICommand.Execute方法传递CommandSource的CommandParameter(命令参数)的值。
此外,CommandSource可基于Command的CanExecute状态来启用或禁用它自己。要这么做,CommandSource可调用ICommand.CanExecute方法并将CommandParameter的值传递给它。CommandSource随后可使用返回的布尔值来将CommandSource的状态设置为Command或禁用。
CommandSource也可注册ICommand.CanExecuteChangedEvent,并且随后每当CommandSource收到CanExecuteChangedEvent时就重新调用ICommand.CanExecute方法。基于从ICommand.CanExecute返回的值,CommandSource可相应地更新其启用或禁用状态。
可用于调用Command的对象的另一个例子是InputBinding(输入绑定)对象(下文称为“InputBinding”)。InputBinding将输入与命令相关联。如下所述且在某些条件下,当收到由InputBinding标识的输入时,就产生命令。如前所述,输入可来自许多源,包括键盘、输入笔、鼠标、语音输入等。InputBinding类的示例性类定义包括:
public class InputBinding
{
public virtual InputGesture Gesture{get;set;}
public ICommand Command{get;set;}
public object Parameter{get;set;}
public IInputElement Target;
}
InputGesture(输入姿势)对象(下文为“InputGesture”)定义InputGesture所要监听的一或多个事件的事件集合,诸如鼠标点击、输入笔轻击或键盘输入。该集合可使用InputGesture中的InputEvent(输入事件)属性来定义。可注册对应于这些事件的事件监听程序,从而InputGesture对象在任何事件发生时得到通知。
InputGesture也可定义Matches(匹配)方法,它接受InputEventArgs(输入事件自变量)并且返回一个值,该值指示InputEventArgs是否匹配与InputGesture相关联的事件集合。
此外,可由InputGesture类的子类提供ValidateCallback(验证回调)方法。ValidateCallback可在收到事件时被调用,以在检查对应于InputGesture的所有InputBinding的匹配之前,确定是否收到了有效自变量。InputGesture类可用作更为特定类型的InputGesture(例如,鼠标、键盘、输入笔等)的父类。
InputGesture类的示例性接口包括:
public class InputGesture
{
protected RoutedEventeventCollection InputEvents;
public virtual bool Matches(InputEventArgs args);
protected static virtual ValidateInput(InputEventArgs args);
}
InputBinding将InputGesture与命令相关联。例如,InputBinding对象可将[控制键]-c与“复制”命令相关联。另一InputBinding对象可将输入笔的轻击与“剪切”命令相关联。每当InputBinding对象获得InputGesture(如由合适的事件集合指示的),就可执行相关联的命令。InputBinding类可用作更特定的InputBinding类型(例如鼠标、键盘、输入笔等)的父类。
图10是根据在此所述主题的诸方面概括地表示可视树的框图。图形框架(诸如结合图12所述的)可以使用可视树来显示可视元素。可视树可包括可视元素1005-1014,它们表示要显示的元素。这样的元素可包括窗口、格栅、列表框、组合框、按钮、文本、图形、面板等等。在可视树中的一些元素可包括可视树中的其它元素。例如,窗口元素可包括面板和格栅。如另一个示例,按钮元素可包括文本元素和矩形元素。在某些意义上,可视树可被认为是分层数据结构的一种形式。
如前所述,InputBinding在收到由InputBinding(例如InputGesture)指定的输入时产生命令。通常,元素可具有与其相关联的InputBinding的类集(即零、一或多个)。这些InputBinding有时称为“实例”InputBinding。此外,InputBinding可在类层次和在全局层次上注册。
图11是概括地表示根据在此所述主题的诸方面在响应于收到InputEvent产生命令时可发生的动作的流程图。在框1105,动作开始。
在框1110,接收InputEvent。例如,按下键盘上的键或按下鼠标按钮。在框1110,选择带焦点的元素。例如,如果收到InputEvent同时文本框具有焦点,则选择该文本框。
在框1120,作出该元素是否具有为该InputEvent定义的实例InputBinding的判定。在框1125,如果该元素具有为该InputEvent定义的InputBinding,则动作在框1160继续;否则,动作在框1130继续。
在框1130,作出该元素是否具有为该InputEvent定义的类InputBinding的判定。在框1135,如果该元素具有为该InputEvent定义的类InputBinding,则动作在框1160继续;否则,动作在框1140继续。
在一些实现中,如果没有为InputEvent定义类InputBinding,则InputEvent可作为输入发送到该元素。该元素可能正在“监听”一系列键击或其它输入。如果该元素正在监听这样的输入并且处理该输入,则动作停止;否则,动作在框1140继续。
在框1140,作出该当前元素的父元素是否存在的判定。如果是,动作在框1145继续;否则,动作在框1150继续。
在框1145,选择该父元素(例如,通过在该父元素上引发InputEvent)。与框1120-1140相关联的动作随后可重复,直到先辈(ancestor)包括为该InputEvent定义的实例或类InputBinding,或者直到找不到包括该InputBinding的先辈。
如果没有找到实例或类InputBinding,则在框1150,作出是否为该InputEvent定义了全局InputBinding的判定。在框1155,如果为该InputEvent定义了全局InputBinding,则动作在框1160继续;否则,动作在框1165继续。
在框1160,执行与找到的InputBinding相关联的命令。在框1165,动作结束。
将认识到,上述动作提供关于产生命令的极大灵活性。例如,可以注册一个可被类命令覆盖的全局命令,而该类命令可被实例命令进一步覆盖。
RoutedCommand(路由的命令)对象(后文称为“RoutedCommand”)可用于经可视树或其它数据结构将命令路由至处理该命令的元素。RoutedCommand可与各种命令一起使用,例如,剪切、复制、粘贴等,其中命令的目标随焦点改变。
RoutedCommand可通过在特定目标元素上引发事件或者通过在命令发生时在具有焦点的元素上引发事件来路由命令。如果该元素与该命令绑定(例如,通过如下所述的CommandBinding(命令绑定)),则由该CommandBinding定义的处理程序可被调用以处理该命令。如果元素没有绑定于命令,则可在该元素的父元素上引发事件。如果该父元素绑定于该命令,则由父元素的CommandBinding定义的处理程序处理该命令。如果该父元素没有绑定于该命令,则可在其父元素上引发事件,等等。最后,找到绑定于该命令的元素,或者该命令到达可视树的顶上而没有被任何元素处理。
在一些实现中,可注册和使用类和全局CommandBindings。在这样的实现中,选择合适的CommandBinding可用与结合图11关于InputBindings描述的相似方式来处理。
CommandBinding对象(下文是“CommandBinding”)定义RoutedCommand与代表(例如,方法)之间的关联,以调用与该RoutedCommand的事件相关联的事件处理程序。当执行Command对象时,可激活带有焦点的元素上的PreviewCommandExecuteEvent(预览命令执行事件)和CommandExecuteEvent(命令执行事件)并且作为参数传递给Command。类似地,当Command的IsEnabled(是否启用)方法被调用时,可以调用带有焦点的元素上的CommandQueryEnabled(命令查询启用)和PreviewCommandQueryEnabledEvent(预览命令查询启用事件)。CommandBindings类的示例性定义包括:
public class CommandBinding
{
//构造程序
public CommandBinding();
public CommandBinding(RoutedCommand cmd);
//属性与事件
public RoutedCommand Command {get;set;}
public ExecuteEventHandler Execute {get;set;}
public CanExecuteEventHandler CanExecute {get;set;}
public ExecuteEventHandler PreviewExecute {get;set;}
public CanExecuteEventHandler PreviewCanExecute {get;set;}
}
图12是概括地表示根据在此所述主题的诸方面可在执行关联于命令的动作时发生的动作的流程图。在框1205,动作开始。
在框1210,调用Execute方法。例如,用户按下表单上的按钮。在框1210,选择带有焦点的元素。如果命令与目标元素相关联,则选择该元素。例如,如果调用与目标文本框相关联的Execute方法,则选择该文本框。
在框1220,作出该元素是否具有为该Command定义的实例CommandBinding的判定。在框1225,如果该元素具有为该Command定义的CommandBinding,则动作在框1260继续;否则,动作在框1230继续。
在框1230,作出该元素是否具有为该Command定义的类CommandBinding的判定。在框1235,如果该元素具有为该Command定义的CommandBinding,则动作在框1260继续;否则,动作在框1240继续。
在框1240,作出当前元素是否存在父元素的判定。如果有,则动作在框1245继续;否则,动作在框1250继续。
在框1245,选择父元素(例如,通过在父元素上引发事件)。与框1220-1240相关联的动作随后可重复,直到一先辈元素包括为该Command定义的实例或类CommandBindings的为止,或者直到找不到包括这一CommandBindings的先辈元素为止。
如果找不到实例或类CommandBinding,则在框1250作出是否为该Command定义全局CommandBinding的判断。在框1255,如果为该Command定义了全局CommandBinding,则动作在框1260继续;否则,动作在框1265继续。
在框1260,执行由发现的CommandBinding标识的处理程序。在框1265,动作结束。
此外,CanExecute查询可通过与RoutedCommand相同的机制来处理。例如,如果一个元素包括CanExecute方法,则当该元素具有焦点时调用该元素的CanExecute方法。如果不包括,则对该元素的先辈元素进行搜索,以找到CanExecute方法。在执行CanExecute查询时,RoutedCommand可在带有焦点的元素或选定元素上引发CanExecuteEvent(能执行事件)事件。RoutedCommand的示例性接口可包括:
public class RoutedCommand:ICommand
{
Execute(object param);
Execute(IInputElement target,object param);
CanExecute(object params);
CanExecute(IInputElement target,object param);
event CanExecuteChangedEvent CanExecuteChanged;
}
注意,InputElement(输入元素)目标允许应用程序开发者直接将RoutedCommand的目标定为一个特定的元素而非具有焦点的元素。这是有用的,例如,在应用程序开发者想要一个按钮始终在与该按钮邻接的文本框上执行“提交”命令或者执行某种其它特定行为的情况下。
而且,RoutedCommand可以监听RequerySuggested(重新查询建议)事件。RequerySuggested事件出于多种原因发生。例如,当焦点设置于文本框中的选定文本时,可能需要启用剪切、复制和粘贴命令(以及关联的按钮、菜单项等)。然而,当焦点设置于滚动条时,这些按钮和控件可能需要被禁用,因为剪切、复制和粘贴无法应用。于是作为一个示例,每当焦点改变时,RequerySuggested事件可在一或多个元素上引发。
当收到RequerySuggested事件时,RoutedCommand随后可以引发CommandSource所监听的CanExecuteChangedEvent。CommandSource随后可调用其CanExecute方法来更新其状态。
RoutedCommands也可包括IsRMEnabled(是否启用RM)属性。如果IsRMEnabled属性设置为False(假),则可防止元素变为启用,即使CanExecute为True(真)。例如,这可用于与其中可限制执行各种命令的权限的数字权限管理(DRM)系统一起工作。
RoutedProperty(路由属性)允许应用程序开发者定义因目标随焦点改变而不能在目标上直接定义的属性。例如,工具条可包括工具条项,诸如粗体、斜体、下划线等等。此外,工具条可与文本框相关联,并且可从文本框中选择文本。例如,当选择粗体工具条项时,可切换至选定文本的粗体。如果选定文本支持粗体,则启用粗体工具条项。此外,工具条项可显示当前的状态,即有关该选定文本是否包括与这些工具条项相关联的属性(例如,粗体,斜体,下划线)的状态。
RoutedProperty的示例性接口包括:
public class RoutedProperty:INotifyPropertyChanged
{
public object Value{get;set;}
public bool CanGetValue{get;}
//事件
internal static RoutedEventID GetValueEvent;
internal static RoutedEventID SetValueEvent;
internal static RoutedEventID CanGetValueEvent;
}
与RoutedProperty相关联的元素可通过使用先前描述的有关Command和RoutedCommand的机制来设置其启用/禁用状态。此外,RoutedProperty可用于获得带有焦点的元素的当前值,从而它可以相应地显示其状态。该值可通过激活带有焦点的元素上用以返回值的GetValueEvent(取值事件)来获得。例如,RoutedProperty也可用于经由Command设置带有焦点的元素的当前值(例如从粗体到正常)。该值可通过激活带有焦点的元素上的SetValueEvent(设置值事件)并且传递要设置该值的值参数来设置。这些事件可按所述的相同方式结合上述RoutedCommand来传播。
图13是概括地表示在此所述主题的诸方面可运行的环境的框图。环境可包括程序1305、表示框架1310、表示核心1315、milcore(MIL核心)1320、运行时组件1345、编解码器组件1325、DirectX组件1330,图形设备接口(GDI)1335,驱动程序1340以及运行时模块1345。
表示框架1310被暴露给软件开发者展示并包括可通过其作出各种请求的API。图形框架的顶层对象,诸如按钮、列表框、组合框、滚动条、拆分条等可驻留在表示框架1310中。
表示核心1315也通过可经由其作出各种请求的API而被暴露给软件开发者。前述各接口可通过表示核心1315而暴露。图形框架的顶层对象的属性,诸如ImageSource(图象源)对象、刷子、笔、形状、动画支持、文本等等可驻留在表示核心1315或表示框架1310中。
milcore 1320实现由表示框架1310和表示核心1315的API提供的功能。milcore 1320可由表示核心1315和表示框架1310来访问。
运行时组件1345可提供运行从一或多个编程语言创建的中间语言的环境。例如,运行时组件可用于执行从实现表示核心1315、表示框架1310和程序1305的代码创建的中间语言。
编解码器1325可由表示核心1315和milcore 1320用来图像化诸如编码和解码图像的各任务。
DirectX组件1330可提供API以使得软件开发者能够访问专门的硬件特征(诸如视频和声音硬件特征)而不必写硬件专用的代码。程序1305和milcore1320可使用DirectX组件1330来访问这些特征。
GDI 1335允许各过程在视频显示器上显示图形和格式化的文本,并且可与代表这些过程显示图形和格式化的文本的设备驱动程序进行交互。
驱动程序1340可用于与硬件接口,而运行时1345可用于执行从各种编程语言产生的中间代码。
尽管在图13的环境的各种组件之间画出了一些线以表示这些组件之间的通信能力,但是可以存在更多、更少或其它通信路径而不背离在此所述的主题的精神或范围。而且,尽管已经描述了环境的各种组件,但将认识到,可使用更多、更少或其它组件,或者用其它配置来配置而不背离在此所述主题的精神或范围。
将认识到,在此所述主题的诸方面可用于抽象输入,抽象实现。这允许应用程序开发者更容易地创建菜单、工具条和其它UI元素。例如,应用程序开发者可更容易地通过在一种标记语言中将菜单项或工具条项与命令相关联来创建菜单或工具条。而且,可创建定义标准命令的命令库(例如剪切、复制、粘贴等等)。因为抽象了实现,所以当发出一个命令时,用于一元素或其先辈的合适处理程序被自动调用。
如从上述详细描述中可以看见,已经描述了关于用户界面的诸方面。尽管在此所述主题的诸方面易于作出各种修改和替换构造,但某些说明性实施例在附图中示出并在上面被详细地描述。然而应当了解,这不是要将所要求保护的主题限制于所公开的特定形式,而是相反地,目的是要覆盖落在在此所述主题的各种方面的精神和范围之内的所有修改、替换构造和等效方案。
Claims (18)
1.至少一个计算机可读介质,包含在由计算机执行时完成动作的指令,所述动作包括:
在接口处,接收执行命令的指令;以及
响应于所述指令,通过遍历分层数据结构来尝试找出与所述命令相关联的对象。
2.如权利要求1所述的至少一个计算机可读介质,其特征在于,所述通过遍历分层数据结构尝试找出与所述命令相关联的对象包括选择带有焦点的元素,并且判定命令绑定对象是否将所述元素与所述命令相关联。
3.如权利要求2所述的至少一个计算机可读介质,其特征在于,所述通过遍历分层数据结构尝试找出与所述命令相关联的对象还包括选择带有焦点的元素的先辈,并且判定一命令绑定对象是否将所述先辈与所述命令相关联。
4.如权利要求2所述至少一个计算机可读介质,其特征在于,所述通过遍历分层数据结构尝试找出与所述命令相关联的对象还包括判定一命令绑定对象是否将一包括所述元素的类与所述命令相关联。
5.如权利要求2所述的至少一个计算机可读介质,其特征在于,所述通过遍历分层数据结构尝试找出与所述命令相关联的对象还包括判定一全局命令绑定对象是否与所述命令相关联。
6.如权利要求2所述的计算机可读介质,其特征在于,所述分层数据结构包括可视树,所述可视树包括多个元素之间的关系,并且所述元素的每一个都能在图形用户界面中表示。
7.至少一个计算机可读介质,包含在由计算机执行时完成动作的指令,所述动作包括:
在一接口处,接收一输入事件;以及
响应于所述输入事件,判定一在图形用户界面中表示的元素是否具有为所述输入事件定义的实例绑定。
8.如权利要求7所述的至少一个计算机可读介质,其特征在于,还包括响应于所述输入事件,判定所述元素是否具有为所述输入事件定义的类输入绑定,其中所述类输入绑定定义具有所述类输入绑定类型的元素所要调用的方法。
9.如权利要求8所述的至少一个计算机可读介质,其特征在于,还包括响应于所述输入事件,判定所述元素的父元素是否具有为所述输入事件定义的实例输入绑定。
10.如权利要求9所述的至少一个计算机可读介质,其特征在于,如果所述元素的没有先辈具有为所述输入事件定义的实例或类输入绑定,则判定是否有为所述输入事件定义的全局输入绑定。
11.如权利要求7所述的至少一个计算机可读介质,其特征在于,响应于一输入源,产生所述输入事件,其中所述输入源由至少键盘、鼠标、输入笔或用于捕捉语音命令的话筒组成。
12.如权利要求7所述的至少一个计算机可读介质,其特征在于,如果所述元素具有与所述输入事件相关联的输入绑定,则执行与所述输入绑定相关联的命令。
13.如权利要求12所述的至少一个计算机可读介质,其特征在于,所述执行与所述输入绑定相关联的命令包括在具有可视表示的元素可视树中搜索具有将所述命令与处理程序相关联的命令绑定的元素。
14.如权利要求7所述的至少一个计算机可读介质,其特征在于,所述输入绑定将一输入姿势与一命令相关联,其中,所述输入姿势与一或多个事件的集合相关联,其中如果所述一或多个事件中任一事件发生则通知所述输入姿势。
15.在一计算环境中,一种方法,包括:
接收输入事件;
选择指向所述输入事件的可视元素;
判定所述可视元素是否包括将一包括所述输入事件的输入姿势与一命令相关联的绑定。
16.如权利要求15所述的方法,其特征在于,还包括如果所述可视元素不包括将所述输入姿势与所述命令相关联的绑定,则判定所述元素是否关联于一个将所述输入姿势与一命令相关联的类绑定。
17.如权利要求16所述的方法,其特征在于,还包括判定所述可视元素的父元素的绑定是否将所述输入姿势与一命令相关联。
18.如权利要求15所述的方法,其特征在于,还包括经由一路由的命令对象执行所述命令,其中所述路由的命令对象用于搜索分层数据结构以找出具有与所述命令相关联的方法的元素。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/215,575 | 2005-08-30 | ||
US11/215,575 US7568035B2 (en) | 2005-08-30 | 2005-08-30 | Command binding determination and implementation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101253474A true CN101253474A (zh) | 2008-08-27 |
Family
ID=37805656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800314375A Pending CN101253474A (zh) | 2005-08-30 | 2006-08-29 | 用于命令的方法和计算机可读介质 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7568035B2 (zh) |
EP (1) | EP1922610A4 (zh) |
JP (1) | JP4420968B2 (zh) |
KR (1) | KR101238550B1 (zh) |
CN (1) | CN101253474A (zh) |
WO (1) | WO2007027815A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103109258A (zh) * | 2010-09-22 | 2013-05-15 | Nec卡西欧移动通信株式会社 | 显示装置、显示方法及其程序、终端装置 |
CN113126992A (zh) * | 2021-05-11 | 2021-07-16 | 南京炫佳网络科技有限公司 | 一种控件元素的控制方法、装置、设备及存储介质 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7707255B2 (en) | 2003-07-01 | 2010-04-27 | Microsoft Corporation | Automatic grouping of electronic mail |
US8146016B2 (en) | 2004-08-16 | 2012-03-27 | Microsoft Corporation | User interface for displaying a gallery of formatting options applicable to a selected object |
US7703036B2 (en) | 2004-08-16 | 2010-04-20 | Microsoft Corporation | User interface for displaying selectable software functionality controls that are relevant to a selected object |
US8255828B2 (en) | 2004-08-16 | 2012-08-28 | Microsoft Corporation | Command user interface for displaying selectable software functionality controls |
US9015621B2 (en) | 2004-08-16 | 2015-04-21 | Microsoft Technology Licensing, Llc | Command user interface for displaying multiple sections of software functionality controls |
US20060253831A1 (en) * | 2005-05-03 | 2006-11-09 | Microsoft Corporation | Validation architecture |
US8627222B2 (en) | 2005-09-12 | 2014-01-07 | Microsoft Corporation | Expanded search and find user interface |
US9727989B2 (en) | 2006-06-01 | 2017-08-08 | Microsoft Technology Licensing, Llc | Modifying and formatting a chart using pictorially provided chart elements |
US20080168478A1 (en) * | 2007-01-07 | 2008-07-10 | Andrew Platzer | Application Programming Interfaces for Scrolling |
US7844915B2 (en) | 2007-01-07 | 2010-11-30 | Apple Inc. | Application programming interfaces for scrolling operations |
US20080168402A1 (en) | 2007-01-07 | 2008-07-10 | Christopher Blumenberg | Application Programming Interfaces for Gesture Operations |
US8436815B2 (en) * | 2007-05-25 | 2013-05-07 | Microsoft Corporation | Selective enabling of multi-input controls |
US8484578B2 (en) | 2007-06-29 | 2013-07-09 | Microsoft Corporation | Communication between a document editor in-space user interface and a document editor out-space user interface |
US8762880B2 (en) | 2007-06-29 | 2014-06-24 | Microsoft Corporation | Exposing non-authoring features through document status information in an out-space user interface |
WO2009043029A2 (en) | 2007-09-28 | 2009-04-02 | Xcerion Aktiebolag | Network operating system |
US8416196B2 (en) * | 2008-03-04 | 2013-04-09 | Apple Inc. | Touch event model programming interface |
US8174502B2 (en) * | 2008-03-04 | 2012-05-08 | Apple Inc. | Touch event processing for web pages |
US8645827B2 (en) | 2008-03-04 | 2014-02-04 | Apple Inc. | Touch event model |
US8717305B2 (en) | 2008-03-04 | 2014-05-06 | Apple Inc. | Touch event model for web pages |
US9588781B2 (en) | 2008-03-31 | 2017-03-07 | Microsoft Technology Licensing, Llc | Associating command surfaces with multiple active components |
US9665850B2 (en) | 2008-06-20 | 2017-05-30 | Microsoft Technology Licensing, Llc | Synchronized conversation-centric message list and message reading pane |
US9311112B2 (en) * | 2009-03-16 | 2016-04-12 | Apple Inc. | Event recognition |
US8285499B2 (en) | 2009-03-16 | 2012-10-09 | Apple Inc. | Event recognition |
US9684521B2 (en) * | 2010-01-26 | 2017-06-20 | Apple Inc. | Systems having discrete and continuous gesture recognizers |
US8566044B2 (en) * | 2009-03-16 | 2013-10-22 | Apple Inc. | Event recognition |
US8566045B2 (en) | 2009-03-16 | 2013-10-22 | Apple Inc. | Event recognition |
US20100325565A1 (en) * | 2009-06-17 | 2010-12-23 | EchoStar Technologies, L.L.C. | Apparatus and methods for generating graphical interfaces |
US9268404B2 (en) * | 2010-01-08 | 2016-02-23 | Microsoft Technology Licensing, Llc | Application gesture interpretation |
US8552999B2 (en) | 2010-06-14 | 2013-10-08 | Apple Inc. | Control selection approximation |
US20120198353A1 (en) * | 2011-01-28 | 2012-08-02 | Microsoft Corporation | Transferring data using a physical gesture |
US9298363B2 (en) | 2011-04-11 | 2016-03-29 | Apple Inc. | Region activation for touch sensitive surface |
US9733716B2 (en) | 2013-06-09 | 2017-08-15 | Apple Inc. | Proxy gesture recognizer |
US11590098B2 (en) | 2016-09-06 | 2023-02-28 | Mayo Foundation For Medical Education And Research | Methods of treating triple-negative breast cancer using compositions of antibodies and carrier proteins |
JP6651275B1 (ja) * | 2019-08-01 | 2020-02-19 | 株式会社ディスコ | 加工装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5237654A (en) * | 1990-04-17 | 1993-08-17 | International Business Machines Corporation | Hierarchical inter-panel process flow control |
US5761656A (en) * | 1995-06-26 | 1998-06-02 | Netdynamics, Inc. | Interaction between databases and graphical user interfaces |
US7302670B2 (en) * | 2000-12-21 | 2007-11-27 | Bryan Darrell Bowyer | Interactive interface resource allocation in a behavioral synthesis tool |
JP4558255B2 (ja) * | 2002-01-28 | 2010-10-06 | 三菱電機インフォメーションテクノロジー株式会社 | エミュレータ端末への表示データダウンロード方法 |
JP2004334332A (ja) * | 2003-04-30 | 2004-11-25 | Ricoh Co Ltd | 多次元データベース参照プログラム |
US7721254B2 (en) * | 2003-10-24 | 2010-05-18 | Microsoft Corporation | Programming interface for a computer platform |
US7386856B2 (en) * | 2003-11-18 | 2008-06-10 | Microsoft Corporation | Extension of commanding to control level |
-
2005
- 2005-08-30 US US11/215,575 patent/US7568035B2/en active Active
-
2006
- 2006-08-29 EP EP06802647A patent/EP1922610A4/en not_active Ceased
- 2006-08-29 WO PCT/US2006/033926 patent/WO2007027815A1/en active Application Filing
- 2006-08-29 JP JP2008529246A patent/JP4420968B2/ja not_active Expired - Fee Related
- 2006-08-29 CN CNA2006800314375A patent/CN101253474A/zh active Pending
- 2006-08-29 KR KR1020087004028A patent/KR101238550B1/ko active IP Right Grant
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103109258A (zh) * | 2010-09-22 | 2013-05-15 | Nec卡西欧移动通信株式会社 | 显示装置、显示方法及其程序、终端装置 |
CN103109258B (zh) * | 2010-09-22 | 2017-05-24 | 日本电气株式会社 | 信息显示装置、显示方法、终端装置 |
CN113126992A (zh) * | 2021-05-11 | 2021-07-16 | 南京炫佳网络科技有限公司 | 一种控件元素的控制方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2007027815A1 (en) | 2007-03-08 |
JP4420968B2 (ja) | 2010-02-24 |
JP2009506465A (ja) | 2009-02-12 |
KR101238550B1 (ko) | 2013-03-04 |
US20070050469A1 (en) | 2007-03-01 |
EP1922610A1 (en) | 2008-05-21 |
EP1922610A4 (en) | 2011-09-21 |
KR20080041211A (ko) | 2008-05-09 |
US7568035B2 (en) | 2009-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101253474A (zh) | 用于命令的方法和计算机可读介质 | |
CN100587658C (zh) | 可搜索控制模板功能的基于任务的界面 | |
CN100504768C (zh) | 基于树视图的编辑器中的内联属性编辑系统和方法 | |
KR100661393B1 (ko) | 웹 프로그래밍 환경을 응용한 웹사이트 관리 시스템 및방법 | |
CN101535934B (zh) | 提供用于查看和编辑元数据的定制用户界面的方法和系统 | |
CN101331440B (zh) | 智能软键盘 | |
CN101151608A (zh) | 开发人员容易地找出或扩展系统上周知位置的能力 | |
CN1834906A (zh) | 丰富数据绑定应用程序 | |
CN101164054A (zh) | 自动提示列表和手写输入 | |
CN102360286A (zh) | 控制面板架构 | |
CN108027721A (zh) | 用于使用控件来配置通用程序的技术 | |
CN101416143A (zh) | 基于许可的用户界面变形 | |
US20170300305A1 (en) | Executable guidance experiences based on implicitly generated guidance models | |
CN102770842A (zh) | 基于样式的用户界面 | |
CN102693263A (zh) | 数据编程环境 | |
US20060236253A1 (en) | Dialog user interfaces for related tasks and programming interface for same | |
CN1855096A (zh) | 带有基础可扩展框架的面向任务的界面 | |
CN102609247A (zh) | 国际化的图形用户界面 | |
CN101379482B (zh) | 指定应用程序用户界面的方法和系统 | |
Chopra et al. | "@ alex, this fixes# 9": Analysis of Referencing Patterns in Pull Request Discussions | |
CN103914296A (zh) | 用于本机语言ide代码帮助的方法和系统 | |
US20090137202A1 (en) | Information distribution system | |
JP2008287365A (ja) | プログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体 | |
de Paula et al. | Relating Human-computer Interactin and Software Engineering Concerns: Towards Extending UML Through an Interaction Modelling Language | |
Ponsard et al. | Assessment of EMF Model to Text Generation Strategies and Libraries in an Industrial Context. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080827 |