INTERFACE Y SISTEMA PARA MANIPULAR VISTAS PEQUEÑAS DE VENTANAS EN VIVO EN UN ADMINISTRADOR DE VENTANA
CAMPO DE LA INVENCIÓN
Los aspectos de la presente invención se refieren a vistas pequeñas de ventanas y, en particular a una interfase y sistema de manipulación de vistas pequeñas en un administrador de ventana
ANTECEDENTES DE LA INVENCIÓN
Los sistemas de computadora presentan una variedad de ventanas en las cuales los usuarios pueden ingresar datos, manipular datos o activar procedimientos Si se corre más de una aplicación, simultáneamente, pueden presentarse varias ventanas en la presentación de computadora, cada ventana correspondiendo a una aplicación También existen múltiples ventanas para cualquier aplicación Por ejemplo, si un usuario ingresa datos en un programa de procesamiento de palabra mientras también trabaja en un programa de hojas de cálculo pueden existir dos ventanas abiertas en la presentación Una de las ventanas es la ventana de aplicación de procesamiento de palabra y la segunda ventana es la ventana de programa de hoja de calculo Si el usuario adicionalmente está viendo un video en una aplicación de reproductor de medios, existirá una ventana adicional que corresponde a la aplicación de
reproductor de medios Mientras el número de aplicaciones activas aumenta, asi lo hace el numero de ventanas que se presenta en la pantalla de computadora Un usuario que utiliza múltiples aplicaciones simultáneamente frecuentemente se enfrenta con una multitud de ventanas en la pantalla que causa un escritorio desordenado que lleva la confusión y frustración del desorden observado en la pantalla Por ejemplo, pueden existir muchas ventanas que se traslapan en la presentación y un usuario puede tener que desperdiciar tiempo al encontrar una ventana deseada cada vez que el usuario desea completar una tarea en una aplicación diferente Para aliviar este problema, el usuario puede minimizar ventanas o quitar aplicaciones con el fin de disminuir el desorden (y el numero de ventanas en la pantalla) Sin embargo, si se minimizan las ventanas, entonces el usuario ya no tiene acceso inmediato a la aplicación correspondiente Si se necesita tomar una acción en una aplicación particular en la cual se minimiza una ventana, el usuario primero debe localizar la ventana deseada y abrir la ventana deseada después de localizar la ventana deseada Este procedimiento es muy consumidor de tiempo De forma similar si el usuario quita la aplicación para limpiar el desorden de escritorio, entonces la aplicación ya no esta activa En este caso, el usuario debe remiciar la aplicación con el fin de completar la tarea deseada y desperdicia incluso más tiempo También, si la aplicación realiza una función en curso, la función se pierde durante el tiempo en que la aplicación no está activa
Típicamente, cuando se minimiza una ventana de aplicación, presentarse un botón de barra de tareas en una barra de tareas para indicar que la aplicación está activa Aunque el botón de barra de tareas puede indicar que la aplicación esta activa, frecuentemente solo hay un icono o un nombre de la aplicación en el botón de barra de tarea Sin información adicional, el usuario tendrá que abrir la ventana para ver los contenidos de la ventana Sin embargo, al abrir y cerrar la ventana simplemente puede revisar los contenidos de la ventana (por ejemplo, para valorar la identidad de la ventana), el usuario desperdicia tiempo y esfuerzo lo que causa una pérdida de eficiencia y productividad Este problema que se compone cuando el número de aplicaciones activas y número de ventanas aumenta cuando el usuario debe abrir y cerrar muchas ventanas para encontrar la ventana deseada De esa forma, existe una necesidad en la técnica en un sistema y método para proporcionar acceso programático conveniente para manipular la ventana o vistas pequeñas de aplicación y expresar vistas pequeñas en una forma para proporcionar flexibilidad en una pantalla de vistas pequeñas y contenido de vistas pequeñas También, existe una necesidad en la técnica de una interfase de programación y un método para implementar la interfase de programación para manejar efectivamente e implementar ventanas de aplicación y vistas pequeñas y expresar las ventanas y vistas pequeñas en una forma flexible
BREVE DESCRIPCIÓN DE LA INVENCIÓN
Los aspectos de la presente invención proporcionan una interfase, sistema, o método para presentar una ventana en una pantalla con lo cual se dirigen uno o más asuntos descritos anteriormente Una vista pequeña dinámica que corresponde a una ventana de aplicación se corresponde también en la cual las modificaciones de contenido en una ventana de aplicación se reflejan en la vista pequeña dinámica correspondiente Una modificación de contenido de la ventana de aplicación además puede reflejarse en la vista pequeña dinámica correspondiente en tiempo real
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La Figura 1A ilustra un ejemplo de un sistema para implementar la invención que incluye un dispositivo de cómputo de propósito general en la forma de una computadora Las Figuras 1B a 1 M muestran un ambiente de computadora de propósito general que soporta uno o más aspectos de la presente invención La Figura 2A es un gráfico de escena o diagrama de árbol de presentación que ilustra un ejemplo de componentes de una presentación La Figura 2B demuestra componentes de una pantalla de muestra que corresponde a la Figura 2A
La Figura 3A es un gráfico de escena o diagrama de árbol de pantalla que ilustra un ejemplo de componentes de una pantalla de la presente invención La Figura 3B demuestra la pantalla correspondiente a la Figura 3A Las Figuras 4A y 4B demuestran un ejemplo de una aplicación de la presente invención al proporcionar vistas pequeñas de ventanas de aplicación La Figura 5 ilustra otra aplicación de una vista pequeña de la presente invención en la cual se presentan vistas pequeñas en un menú de ALT-TAB La Figura 6 es un cuadro de flujo que ilustra un ejemplo de un procedimiento para proporcionar vistas pequeñas
DESCRIPCIÓN DETALLADA
Este documento se divide en secciones para ayudar al lector Estás secciones incluyen Vista General, Ambiente de Computadora de Propósito General, Vistas Pequeñas Se nota que las varias conexiones se mencionan entre elementos de la siguiente descripción Se nota que esas conexiones en general, y a menos que se especifique de otra forma pueden ser directas o indirectas y que esta especificación no pretende ser limitante en este aspecto
VISTA GENERAL A Vistas Pequeñas Estáticas En un aspecto, una vista pequeña puede asociarse con la aplicación En una vista pequeña, una versión pequeña de la ventana de aplicación puede presentarse para indicar el contenido original de la ventana de aplicación, que permite al usuario identificar contenido aproximado de la ventana Sin embargo, estás vistas pequeñas pueden no proporcionar contenido actualizado de la ventana de aplicación De esa forma, si se hicieron modificaciones a la ventana de aplicación, la vista pequeña puede ser antigua y puede no proporcionar la imagen apropiada de contenido real de la ventana de aplicación De esa forma, es difícil para el usuario identificar apropiadamente la ventana de aplicación deseada sin tener que abrir la ventana de aplicación por si mismo También, las vistas pequeñas carecen de flexibilidad en términos de presentación de contenido, colocación, tamaño y/o efectos Una vista pequeña de una ventana de aplicación proporciona una imagen estática del contenido original de la ventana de aplicación Sin embargo, el contenido estático no solo percance estático y potencialmente antiguo, si no también las características y colocación de la vista pequeña pueden predeterminarse y pueden no variar basándose en las necesidades del usuario en cualquier momento dado Los sistemas operativos de computadora emplean una capa de software responsable de manejar objetos de interfase de usuario tal
como vistas pequeñas, y proporcionar servicios de interfase de usuario a aplicaciones de software La tapa de software puede denominarse como el Administrador de Ventana de escritorio (DWM) La lógica de presentación, enrutamiento de evento de entrada, e interfases de programación de aplicación (APIs) del Administrador de Ventana de Escritorio (DWM) colectivamente representan política de mterfase de usuario, que a su vez define la experiencia de usuario total del sistema operativo Al presentar el escritorio, el DWM típicamente procesa actualizaciones de pantalla, tal como el movimiento de ventanas, al coordinar la pintura directamente en la pantalla de presentación A partir de aquí, si se cierra o aleja una ventana que se traslapa, la ventana o escritorio fundamentales recientemente presentados deben volverse a pintar Esto es un procedimiento lento en el cual se desperdician innecesariamente tiempo y recursos También, cuando las ventanas se pintan directamente en una posición particular y en una configuración particular en la pantalla como se hace típicamente, la imagen correspondiente de la ventana se establece en esa posición y configuración particular Las modificaciones a la posición o configuración de ventana deben requerir un gran gasto de recurso para volver a pintar la imagen
B Vistas Pequeñas Dinámicas En otro aspecto de la presente invención, una interfase, y método se proporcionan para presentar una vista pequeña en una
pantalla en el cual un Administrador de Ventana de Escritorio (DWM) proporciona una interfase de programación de aplicación (API) que registra una ventana de fuente y una ventana de destino En este ejemplo, la ventana de destino es una ventana en la cual puede presentarse una vista pequeña La vista pequeña presentada con la ventana de destino puede representar al menos una porción de la ventana de fuente correspondiente A partir de aquí, la ventana pequeña puede representar una asociación entre la ventana de fuente y la ventana de destino al proporcionar al menos una porción de la ventana de fuente presentada en al menos una porción de la ventana de destino El DWM puede recibir un indicador de ventana (HWND) que corresponde a una ventana de fuente y un HWN de que corresponde a la ventana de destino La aplicación ademas puede recibir un indicador que representa el registro de la vista pequeña que corresponde a la ventana de fuente En otro aspecto de la presente invención, se proporcionan una interfase, sistema y método para presentar una vista pequeña en una presentación en la cual un Administrador de Ventana de Escritorio (DWM) actualiza o modifica una vista pequeña asociada con una ventana de fuente correspondiente En este ejemplo, el DWM puede recibir datos que definen un tamaño de una ventana de destino, una región de una ventana de fuente para presentarse en una ventana de destino como una vista pequeña, opacidad de una vista pequeña, visibilidad de una vista pequeña efectos especiales de una vista pequeña, etc
Otro aspecto de la presente invención además proporciona una vista pequeña dinámica que comprende exportar una interfase de programación de aplicación para registrar un indicador de vista pequeña, que mantiene una lista de registro de vista pequeña, dibuja una vista pequeña o ventana de destino basándose en una ventana de fuente en donde la ventana de fuente puede ser una ventana de aplicación, actualizar propiedades de una vista pequeña y quitar el registro de la vista pequeña dinámica Ademas, la modificación a una ventana de fuente puede controlarse automáticamente para realizar una modificación correspondiente en una ventana de destino Se nota que se mencionan varias conexiones entre elementos en la siguiente descripción Se nota que estas conexiones en general y, al menos que se especifique de otra forma, pueden ser directas o indirectas y que esta especificación no pretende ser limitante en este aspecto Los aspectos de la presente invención proporcionan una interfase de programación de aplicación (API), sistema y método para control de la pantalla de elementos de presentación tal como ventanas u otra representación de ventana tal como vistas pequeñas en una pantalla En un ejemplo de la presente invención, una versión alterna de una ventana de aplicación es una versión más pequeña de la ventana de aplicación y se presenta en la pantalla La versión más pequeña de la ventana de aplicación además puede presentarse en una ubicación en la pantalla que es diferente de la ventana de aplicación original Alternativamente, la ventana de aplicación
original puede minimizarse para que la ventana de aplicación original no se presente mientras se presenta la versión más pequeña de la ventana de aplicación en la pantalla También, la versión más pequeña de la ventana de aplicación por si misma puede minimizarse, por ejemplo, si se desea espacio adicional en la pantalla Mientras la versión alterna de la ventana de aplicación puede ser una versión más pequeña de la aplicación como se describió se nota que la versión alterna de la ventana de aplicación puede ser mas grande que la ventana de aplicación original o cualquier otro tamaño dependiendo de las necesidades del usuario Por ejemplo, la versión alterna de la ventana de aplicación puede ser una vista pequeña de la ventana de aplicación Una vista pequeña típicamente es una imagen pequeña o representación de un gráfico mayor, o una parte de una imagen menor, que corresponde a la ventana de aplicación La ventana pequeña también puede representar una asociación dentro de una ventana de fuente, que proporciona la fuente o contenido de la vista pequeña, y una ventana de destino que puede ser una ventana en la cual la vista pequeña proporciona contenido de la ventana de fuente Las vistas pequeñas proporcionan la ventaja de la capacidad de presentar vanas ventanas en un momento en un formato conveniente mientras minimiza el uso de espacio en la pantalla También, las vistas pequeñas pueden utilizarse al seleccionar y almacenar imágenes en ventanas más fácilmente En otro aspecto de la presente invención, la vista pequeña o
versión alterna de la ventana de aplicación puede presentarse en la pantalla cuando se solicita Por ejemplo, hacer un flotar un cursor sobre un botón de barras de tareas puede invocar a la presentación de una vista pequeña de la ventana de aplicación En un ejemplo, la vista pequeña es una vista pequeña dinámica y puede modificarse como se modifica la ventana de aplicación original Por ejemplo, los cambios hechos a la ventana de aplicación se reflejan en la vista pequeña dinámica que corresponde a la ventana de aplicación Tales cambios pueden reflejarse en la vista pequeña dinámica en tiempo real, por ejemplo En otro aspecto de la presente invención, las vistas pequeñas o vistas pequeñas dinámicas pueden ordenarse dentro de otra ventana, o ventana de destino Por ejemplo, múltiples vistas pequeñas dinámicas para diferentes aplicaciones pueden incluirse en una ventana de destino para que la ventana de destino presente vistas pequeñas para cada una de las diferentes aplicaciones También, cualquiera de las vistas pequeñas dinámicas presentadas en la ventana de destino puede reflejar el estado actual de la ventana de aplicación correspondiente Alternativamente, puede presentarse una vista pequeña en otra vista pequeña o puede presentarse en cascada vistas pequeñas para que pueda presentarse una primera vista pequeña en una segunda vista pequeña, que a su vez, puede presentarse en una tercera vista pequeña, etc Incluso en otro aspecto de la presente invención, se proporcionan un sistema y método para preparar ventanas fuera de
pantalla La composición de las ventanas después puede realizarse en pantalla de esa forma ahorrando recursos de computadora También, preparar las ventanas fuera de pantalla y componer las ventanas en pantalla permite la funcionalidad de vista pequeña como se describió en la presente invención
AMBIENTE DE COMPUTO DE PROPOSITO GENERAL
La Figura 1A ilustra un ejemplo de un ambiente de sistema de cómputo adecuado 100 en el cual puede implementarse la invención El ambiente de sistema de computo 100 es sólo un ejemplo de un ambiente de computo adecuado y no pretende sugerir ninguna limitación al alcance de uso o funcionalidad de la invención El ambiente de computo 100 tampoco debe interpretarse como teniendo alguna dependencia o requerimiento que se relaciona con cualquiera o combinación de los componentes ilustrados en el ambiente operativo ilustrativo 100 La invención es operacional con numerosos otros ambientes o configuraciones de sistema de cómputo de propósito general o propósito especial Ejemplos de sistemas de cómputo, ambientes, y/o configuraciones bien conocidos que pueden ser adecuados para uso con la invención incluyen, pero no se limitan a, computadoras personales, computadoras de servidor, dispositivos móviles o portátiles, sistemas de multiprocesador, sistemas a base de microprocesador, cajas de TV por cable, electrónica de consumidor
programable, PCs de red, minicomputadoras, macrocomputadoras, ambientes de cómputo distribuido que incluyen cualquiera de los sistemas o dispositivos anteriores y similares Con referencia a la Figura 1A, un sistema ilustrativo para implementar la invención incluye un dispositivo de cómputo de propósito general en la forma de una computadora 110 Los componentes de la computadora 110 pueden incluir, pero no se limitan a, una unidad de procesamiento 120, una memoria de sistema 130, y un conductor común de sistema 121 que acopla vanos componentes de sistema que incluyen la memoria de sistema a la unidad de procesamiento 120 El conductor común de sistema 121 puede ser cualquiera de vanos tipos de estructuras de conductor común que incluyen un conductor común de memoria o controlador de memoria, un conductor común periférico, y un conductor común local que utiliza cualquiera de una variedad de arquitecturas de conductor común A manera de ejemplo, y no de limitación, tales arquitecturas incluyen conductor común de Arquitectura de Estándar de Industria (ISA), Conductor Común de Arquitectura de Micro Canal (MCA), conductor común de ISA Aumentado (EISA), conductor común local de Asociación de Estándares Electrónicos de Video (VESA) y Conductor Común de Interconexión de Componente Periférico (PCl) también conocido como conductor común de Mézanme La computadora 110 típicamente incluye una variedad de medios legibles por computadora Los medios legibles por computadora incluyen tanto medios volátiles y no volátiles, medios
removibles y no removibles A manera de ejemplo, y no de limitación, los medios legibles por computadora pueden comprender medios de almacenamiento por computadora y medios de comunicación e incluyen, pero no se limitan a, RAM, ROM, EEPROM, memoria flash u otra tecnología de memoria, CD-ROM, discos versátiles digitales (DVD) u otro almacenamiento de disco óptico, cassettes magnéticos, cinta magnética, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que puede utilizarse para almacenar la información deseada y que puede accederse por la computadora 110 Los medios de comunicación típicamente representan instrucciones legibles por computadora, estructuras de datos, módulos de programa u otros datos en una señal de datos modulada tal como una onda portadora u otro mecanismo de transporte e incluyen cualquier medio de entrega de información El término "señal de datos modulada" significa una señal que tiene una o más de sus características establecidas o cambiadas de tal forma para codificar información en la señal A manera de ejemplo, y no de limitación, los medios de comunicación incluyen medios cableados tal como red cableada o conexión cableada directa, medios inalámbricos tal como medios acústicos, RF, infrarrojos y otros inalámbricos Las combinaciones de cualquiera de los anteriores también deben incluirse dentro del alcance de medios legibles por computadora La memoria de sistema 130 incluye medios de almacenamiento por computadora en la forma de memoria volátil y/o no volátil tal
como memorias solo de lecturas (ROM) 131 y memopa de acceso aleatorio (RAM) 132 Un sistema de entrada/salida básico (BIOS)133, que contienen las rutinas básicas que ayudan a transferir información entre elementos dentro de la computadora 110, tal como durante el arranque, típicamente se almacena en ROM 131 La RAM 132 típicamente contiene datos y/o módulos de programa que son inmediatamente accesibles a y/o actualmente están siendo operados por la unidad de procesamiento 120 A manera de ejemplo, y no de limitación, la Figura 1 ilustra el sistema operativo 134, programas de aplicación 135 otros módulos de programa 136, y datos de programa 137 La computadora 110 puede incluir otros medios de almacenamiento por computadora removibles/no removibles, volátiles/no volátiles A manera de ejemplo solamente, la Figura 1 ilustra una unidad de disco duro 140 que lee de o escribe a medios magnéticos no removibles, no volátiles, una unidad de disco magnético 151 que lee de o escribe a un disco magnético removible, no volátil 152, y una unidad de disco óptico 155 que lee de o escribe a un disco óptico removible, no volátil 156, tal como un CD ROM u otro medio óptico Otros medios de almacenamiento por computadora removible/no removible, vol áti I/no volátil que pueden utilizarse en el ambiente operativo ilustrativo incluyen, pero no se limitan a, cassettes de cinta magnética, tarjetas de memoria flash, discos versátiles digitales, cinta de video digital, RAM de estado sólido, ROM de estado sólido y similares La unidad de disco duro 141
típicamente se conecta al conductor común de sistema 121 a través de una interfase de memoria no removible tal como mterfase 140, unidad de disco magnético 151 y unidad de disco óptico 155 típicamente se conectan al conductor común de sistema 121 a través de una interfase de memoria removible, tal como la interfase 150 Las unidades y sus medios de almacenamiento por computadora asociados discutidos anteriormente e ilustrados en la Figura 1A, proporcionan almacenamiento de instrucciones legibles por computadora, estructuras de datos, módulos de programa y otros datos para la computadora 110 En la Figura 1A, por ejemplo, la unidad de disco duro 141 se ilustra como almacenando el sistema operativo 144, programas de aplicación 145, otros módulos de programas 146, y datos de programa 147 Se debe notar que estos componentes pueden ser los mismos o diferentes al sistema operativo 134, programas de aplicación 135, otros módulos de programa 136, y datos de programa 137 El sistema operativo 144, programas de aplicación 145, otros módulos de programa 146, y datos de programa 147 aquí se les proporcionan números diferentes para ilustrar que, en un mínimo, son copias diferentes Un usuario puede ingresar comandos e información en la computadora 20 a través de dispositivos de entrada tal como un teclado 162 y dispositivo de señalamiento 161, comúnmente denominado como un ratón, seguibola o almohadilla sensible al tacto Otros dispositivos de entrada (no mostrados) pueden incluir un micrófono, palanca de mandos, almohadilla de juegos, antena parabólica, escáner, o
similares Estos y otros dispositivos de entrada frecuentemente se conectan a la unidad de procesamiento 120 a través de una interfase de entrada 160 que se acopla al conductor común de sistema, pero pueden conectarse por otra interfase y estructuras de conductor común, tal como un puerto paralelo, puerto de juegos o un conductor común en sene universal (USB) Un monitor 191 u otro tipo de dispositivo de presentación también se conecta al conductor común de sistema 121 a través de una interfase, tal como una interfase de video 190 Además del monitor, las computadoras también pueden incluir otro dispositivo de salida periféricos tal como bocinas 197 e impresora 196 que pueden conectarse a través de una interfase periférica de salida 190 La computadora 110 puede operar en un ambiente en red que utiliza conexiones lógicas a una o mas computadoras remotas, tal como una computadora remota 180 La computadora remota 180 puede ser otra computadora personal, un servidor, un enrutador, una PC de red, un dispositivo par, u otro nodo de red común, y típicamente incluye muchos o todos los elementos descritos anteriormente relativos a la computadora 110, aunque solamente se ilustra un dispositivo de almacenamiento de memoria 181 en la Figura 1A Las conexiones lógicas ilustradas en la Figura 1A incluyen una red de área local (LAN) 171 y una red de área ancha (WAN) 173, pero también pueden incluir otras redes Tales ambientes en red comunmente están ubicados en oficinas, redes de computadora extendidas en empresa, intranets e Internet
Cuando se utiliza en un ambiente en red LAN, la computadora personal 110 se conecta a la LAN 171 a través de una inferíase en red o adaptador 170 Cuando se utiliza en un ambiente en red WAN, la computadora 110 típicamente incluye un módem 172 u otro medio para establecer comunicaciones en la WAN 173, tal como Internet El módem 172 que puede ser interno o externo, puede conectarse al conductor común de sistema 121 a través de la interfase de usuario 160, u otro mecanismo apropiado En un ambiente en red, los módulos de programa ilustrados relativos a la computadora 110, o porciones de la misma, pueden almacenarse en el dispositivo de almacenamiento de memoria remota A manera de ejemplo, y no de limitación, la Figura 1A ilustra programas de aplicación remotos 185 como residentes en el dispositivo de memoria 181 Se apreciará que las conexiones en red mostradas son ilustrativas y pueden utilizarse otros medios para establecer el enlace de comunicaciones entre las computadoras Se apreciara que las conexiones mostradas son ilustrativas y pueden utilizarse otros medios para establecer un enlace de comunicaciones entre las computadoras La existencia de cualquier de los vanos protocolos bien conocidos tal como TCP/IP, Ethernet, FTP, HTTP y similares se presume, el sistema puede operarse en una configuración de cliente-servidor para permitir a un usuapo recuperar páginas web de un servidos a base de web Cualquiera de los vanos navegadores de web convencionales puede utilizarse para presentar y manipular datos en páginas web
Una interfase de programación (o más simplemente "interfases") puede observarse como cualquier mecanismo, procedimiento, protocolo para permitir uno o más segmento(s) de código comunicarse o acceder a la funcionalidad proporcionada por uno o más otro segmento(s) de código Alternativamente, puede observarse una interfase de programación como uno o más mecan?smos(s), metodo(s), llamada(s) de función, módulo(s), objeto(s), etc de un componente de un sistema capaz de acoplarse comunicativamente a uno o mecan?smo(s), método(s), llamada(s) de función, módulo(s), etc de otro componente(s) El término "segmento de código" en la oración precedente pretende incluir una o más instrucciones o líneas de código, e incluye, por ejemplo, módulos de código, objetos, subrutinas, funciones, y así sucesivamente, sin importar la terminología aplicada o si los segmentos de código se recopilan separadamente, o si los segmentos de código se proporcionan como fuente, intermedio, o código de objeto, si los segmentos de código se utilizan en un sistema o procedimiento de tiempo de funcionamiento, o si se localizan en la misma o diferentes máquinas o máquinas múltiples distribuidas, o si la funcionalidad representada por los segmentos de código se implementan completamente en software, completamente en hardware, o una combinación de hardware y software Por noción, una interfase de programación puede observarse genéricamente, como se muestra en la Figura 1B o Figura 1C La Figura 1B ilustra una interfase 1 como un conductor a través del cual
se comunica en el primer y segundo segmentos de código La Figura 1C ilustra una mterfase como comprendiendo objetos de inferíase y 11 y 12 (que puede o no ser parte del primer y segundo segmentos de códigos), que permite que el primer y segundo segmentos de código de un sistema se comuniquen a través del medios M En la vista de la Figura 1C, uno puede considerar objetos de interfase 11 y 12 como inferíase separadas del mismo sistema y 1 también pueden considerar los objetos 11 y 12 más el medio M comprende la interfaz Aunque las Figuras 1B y 1C muestran flujo bidireccional e interfases en cada lado del flujo, cubiertas implementaciones solo pueden tener flujo de información en una dirección (o sin flujo de información como se describe posteriormente) o pueden tener un objeto de inferíase en un lado A manera de ejemplo, y no de limitación, los términos tal como inferíase de programación de aplicación (API), punto de entrada, método, función, subrutina, llamada de procedimiento remoto, e interfase de modelo de objeto de componente (COM), se abarcan dentro de la definición de interfase de programación Los aspectos de tal interfase de programación pueden incluir el método con el cual el primer segmento de código transmite información (en donde "información" se utiliza en su sentido más amplio e incluye datos, comandos, solicitudes, etc ) al segundo segmento de código, el método con el cual el segundo segmento de código recibe la información, y la estructura, secuencia, sintaxis, organización esquema, registro de tiempo y contenido de la
información Con respecto a esto el medio de transporte fundamental por si mismo puede no ser importante para la operación de la interfase si el medio es mediante cables o inalámbrico, o una combinación de ambos, mientras la información se transporta en la forma definida por la interfase En ciertas situaciones, la información puede no pasarse en una o más direcciones en el sentido convencional, mientras la transferencia de información puede ser a través de otro mecanismo (por ejemplo información colocada en una memoria intermedia, archivo, etc separada de flujo de información entre los segmentos de código) o no existente, como cuando un segmento de código simplemente accede la funcionalidad realizada por un segundo segmento de código Cualquiera o todos estos aspectos pueden ser importantes en una situación dada, por ejemplo, dependiendo de si los segmentos de código son parte de un sistema en una configuración perdidamente acoplada o muy acoplada, y así está lista debe considerarse ilustrativa y no limitante Esta noción de una interfase de programación es conocida por aquellos expertos en la técnica y es clara a partir de la descripción detallada anterior de la invención Sin embargo, existen otras formas para implementar una interfase de programación, y, a menos que se excluya expresamente, estas pretenden abarcarse por las reivindicaciones mencionadas al final de esta especificación Tales otras formas pueden parecer mas sofisticadas o complejas que la vista mas simple de las Figuras 1B y 1C, pero sin embargo realizan una función similar para realizar el mismo resultado total
Brevemente ahora describiremos algunas implementaciones alternativas de una mterfase de programación
FACTORIZACION
Una comunicación de un segmento de código a otro puede realizarse indirectamente al romper la comunicación en múltiples comunicaciones separadas Esto se ilustra esquemáticamente en las Figuras 1B y 1E Como se muestra, algunas mterfases pueden describirse en términos de grupos divisibles de funcionalidad De esa forma, la funcionalidad de interfase de las Figuras 1B y 1C puede factopzarse para lograr el mismo resultado, tal como uno puede proporcionar matemáticamente 24, o 2 veces 3 veces 2 Por consiguiente, como se ilustra en la Figura 1D, la función proporcionada por la inferíase 1 puede subdividirse para convertir las comunicaciones a la mterfase en múltiples interfases Interfase 1A, Interfase 1B, Inferíase 1C, etc mientras logra el mismo resultado Como se ilustra en la Figura 1E, la función proporcionada por la inferíase 11 puede subdividirse en múltiples interfases Ma, 11b, 11c, etc mientras logra el mismo resultado Similarmente, la inferíase 12 del segundo segmento de código que recibe información del primer segmento de código puede factopzarse en múltiples interfases 12 a , 12 b , 12c, etc Cuando se factopza, el numero de interfases incluido dentro del primer segmento de código no necesita concordar con el número de interfases incluido en el segundo
segmento de código En cualquier caso de las Figuras 1D y 1E, el espíritu funcional de las mterfases Inferíase 1 y 11 permanecen iguales con las Figuras 1B y 1C respectivamente La factopzación de interfases también puede seguir propiedades asociativas, conmutativas, y otras matemáticas para que la factopzación pueda ser difícil de reconocer Por ejemplo, ordenar las operaciones puede no ser importante, y consecuentemente, una función llevada a cabo por una interfase puede llevarse a cabo bien antes de alcanzar la interfase, por otra pieza de código o inferíase, o realizarse por un componente separado del sistema Ademas, un experto en la técnica de programación puede apreciar que existe una vapedad de formas para hacer diferentes llamadas de función que logran el mismo resultado
REDEFENICION
En algunos casos, puede ser posible ignorar, agregar o redefinir ciertos aspectos (por ejemplo, parámetros) de una interfase de programación mientras aun realiza el resultado pretendido Esto se ilustra en las Figuras 1F y 1C Por ejemplo, se asume que la inferíase 1 de la Figura 1B incluye un Cuadro de llamada de Función (entrada, precisión, salida), una llamada que incluye 3 parámetros, entrada precisión y salida y que se emite del primer segmento de código al segundo segmento de código Si la precisión del parámetro medio no es de ínteres en un escenario dado, como se muestra en la
Figura 1F, también puede ignorarse o incluso reemplazarse con un parámetro sin significado (en esta situación) Uno puede también agregar un parámetro adicional sin importancia En cualquier caso, la funcionalidad en cuadrado puede lograrse, mientras la salida se regresa después de que su entrada se pone al cuadrado por el segundo segmento de código La precisión también puede ser un parámetro muy significativo para sentido descendente u otra porción del sistema de cómputo, sin embargo, una vez que se reconoce que la precisión es necesaria para el propósito angosto de calcular el cuadrado, puede reemplazarse o ignorarse Por ejemplo, en vez de pasar un valor de precisión valido, un valor sin importancia tal como una fecha de nacimiento puede pasarse sin afectar adversamente el resultado Similarmente, como se muestra en la Figura 1G, la interfase 11 se reemplaza por la Interfaz de 11', redefinida para ignorar o agregar parámetros a la interfase La Interfase 12 similarmente puede redefinirse como inferíase 12', redefinida para ignorar parámetros innecesarios, o parámetros que pueden procesarse en otro lugar El punto aquí es que en algunos pasos una inferíase de programación puede incluir aspectos, tal como parámetros, sin ninguna necesidad de algún propósito, y así pueden ignorarse o redefinirse, o procesarse en cualquier otro lugar para otros propósitos
CODIFICACIÓN EN LINEA
También puede ser factible fusionar alguna o toda la funcionalidad de dos módulos de código separados tal como la "mterfase" entre ellos cambia la forma Por ejemplo, la funcionalidad de las Figuras 1B y 1C puede convertirse a la funcionalidad de las Figuras 1H y 11, respectivamente En la Figura 1H, el primero y segundo segmentos de código de la Figura 1B puede fusionarse en un modulo que contiene ambos de estos En este caso, los segmentos de código aun pueden comunicarse uno con otro pero la interfase puede adaptarse a una forma que es más adecuada para el módulo individual De esa forma, por ejemplo, las declaraciones de Llamada y Regreso formales pueden ya no ser necesarias, pero aún puede estar en efecto el procesamiento similar o respuesta(s) consecuente a la interfase 1 Similarmente, mostrada en la Figura 11, parte (o todas) de la interfase 12 de la Figura 1C puede escribirse en línea en la inferíase 11 para formar la inferíase 11" Como se ilustra, la inferíase 12 se divide en 12a y 12 , y la porción de interfase 12a se codifico en línea con la inferíase 11 para forma la inferíase 11" Para un ejemplo concreto se considera que la interfase 11 de la Figura 1C realiza un cuadrado de llamado de función (entrada, salida), que se recibe por la interfase 12, que después del procesamiento del valor pasado por la entrada (para calcular el cuadrado de una entrada) por el segundo segmento de código, pasa de nuevo el resultado cuadrado con la salida En tal caso, el procesamiento realizado por
el segundo segmento de código (entrada al cuadrado) puede realizarse por el primer segmento de código sin una llamada a la interfase
DIVORCIO
Una comunicación de un segmento de código a otro puede realizarse directamente a romper la comunicación en múltiples comunicaciones de separado Esto se ilustra esquemáticamente en las Figuras 1J y 1K Como se muestra en la Figura 1J, una o más p?eza(s) de código (lnterfase(s) de divorcio, ya que la funcionalidad de divorcio y/o funciones de inferíase de la inferíase original) se proporcionan para convertir la comunicaciones en la primera interfase, Inferíase 1 para conformarlas a una inferíase diferente, en este caso las interfases Inferíase 2A, Inferíase 2B e Inferíase 2C Esto puede hacerse, por ejemplo, en donde existe una base instalada de aplicaciones señaladas para comunicarse con, digamos, un sistema operativo de acuerdo con un protocolo de Inferíase 1, pero después el sistema operativo cambia para utilizar una inferíase diferente, en este caso interfases Inferíase 2A, Interfase 2B e Inferíase 2C El punto es que la interfase original utilizada por el segundo segmento de código cambia para que ya no sea compatible por la interíase utilizada por el primer segmento de código, para que un intermediario se utilice para hacer las nuevas y viejas interfases compatibles Similarmente, como se muestra en la Figura 1K, puede
introducirse un tercer segmento de código con la inferíase de divorcio 11 para escribir las comunicaciones de la inferíase 11 y con la inferíase de divorcio D12 para transmitir la funcionalidad de inferíase, por ejemplo, a las interfases 12a e I2b, rediseñadas para trabajar con DI2, pero para proporcionar el mismo resultado funcional Similarmente, DI1 y DI2 pueden trabajar juntos para traducir la funcionalidad de mterfases 11 y 12 a la Figura 1C a un nuevo sistema operativo, mientras proporciona el mismo o similar resultado funcional
REESCRITURA
Incluso otra variante posible es rescribir dinámicamente el código para reemplazar la funcionalidad de inferíase con algo más pero que logra el mismo resultado total Por ejemplo, puede existir un sistema en el cual un segmento de código presentado en un lenguaje intermedio (por ejemplo, Microsoft IL, Java ByteCode, etc ) se proporciona a un recopilador Justo a Tiempo (JIT) o interprete en un ambiente de ejecución (tal como el proporcionado por la estructura de trabajo NET, herramienta de tiempo de funcionamiento Java, u otros ambientes de tipo de funcionamiento similares) El recopilador JIT puede recibirse para convertir dinámicamente las comunicaciones del primer Segmento de Código al Segundo Segmento de Código, es decir para conformarlos a una inferíase diferente como pueden requerirse por el segundo Segmento de
Código (ya sea en original o un segundo Segmento de código diferente) Esto se ilustra en las Figuras IL e IM Como puede observarse en la Figura 1L, este acercamiento es similar al escenario de Divorcio descpto anteriormente Esto puede hacerse, por ejemplo, en donde una base instalada de aplicaciones se diseña para comunicarse con un sistema operativo de acuerdo con un protocolo de Interfase 1, pero después el sistema operativo se cambia para utilizar una interfase diferente El Recopilador JIT puede utilizarse para conformar las comunicaciones al momento de las aplicaciones de base instalada a la nueva inferíase del sistema operativo Como se ilustra en la Figura 1M, este acercamiento de rescribir dinámicamente la ?nterfase(s) puede aplicarse para factopzar dinámicamente, o de otra forma alterar la ?nterfase(s) también También se debe notar que los escenarios antes descritos para logra el mismo similar resultado como una inferíase a través de modalidades alternativas también puede combinarse en vanas formas, en sene y/o en paralelo, o con otro código de intervención De esa forma, las modalidades alternativas presentadas anteriormente no son mutuamente exclusivas y pueden mezclarse, unirse y combinarse para producir los mismos o equivalentes escenarios a los escenarios genéricos presentados en las Figuras 1B y 1C También se nota que, como con la mayoría de las construcciones de programación, existen otras formas similares para lograr la misma o similar funcionalidad de una inferíase que puede
no describirse aquí pero sin embargo se representa por el espíritu y alcance de la invención es decir se nota que al menos es en parte la funcionalidad representada por, y los resultados ventajoso permitidos por, una inferíase que esta bajo el valor de una interfase
VISTAS PEQUE AS
Las Figuras 4A y 4B demuestran un ejemplo de una aplicación de la presente invención al proporcionar vistas pequeñas de ventanas de aplicación En el ejemplo de la Figura 4A, se ilustra una barra de tareas 400 que contiene botones de barra de tareas Cada uno de los botones de barra de tareas corresponde a una aplicación activa El botón de barra de tareas 402 corresponde a un programa de aplicación de solitario que actualmente corre en la computadora De forma similar, el botón de barra de tarea 403 corresponde a una ventana de programa de aplicación de procesamiento de palabra, botón de barra de tareas 405 corresponde a una ventana de programa de aplicación de reproductor de medios y el botón de barra de tareas 406 corresponde a una ventana de programa de aplicación de Calculadora Una vista pequeña de Solitario 401 se proporciona para la ventana de aplicación de solitario y una vista pequeña de Reproductor de Medios 404 se proporciona para el programa de aplicación de reproductor de Medios Las vistas pequeñas correspondientes pueden invocarse en una variedad de formas En un ejemplo no limitante las vistas pequeñas pueden invocarse al
hacer flotar un cursor sobre el botón de barras de tareas correspondientes Por ejemplo, la vista pequeña de Solitario 401 puede invocarse al hacer flotar el cursor sobre el botón de barra de tareas de Solitario 402 También ilustrado en la Figura 4A, las vistas pequeñas dinámicas pueden proporcionar contenido actualizado o "en vivo" que corresponde al programa de aplicación Por ejemplo, la aplicación de Reproductor de Medios puede ser reproducir un video Mientras el video se reproduce en la ventana de aplicación de reproductor de Medios (no mostrado), el video también se reproduce en la vista pequeña de Reproductor de Medios 404 Si la ventana de aplicación de reproductor de medios por si mismas se minimiza, la vista pequeña de reproductor de medios 404 puede presentar la ultima escena en la ventana de aplicación de reproductor de medios antes de minimización Alternativamente, la vista pequeña de reproductor de medios 404 puede continuar para presentar el video mientras continua la reproducción en la aplicación de reproductor de medios incluso aunque la ventana de aplicación de reproductor de medios por si misma se minimiza La Figura 4B ilustra otro ejemplo de vistas pequeñas de la presente invención Una barra de tareas 410 se ilustra al contener un botón de barra de tareas de Solitario 411 que corresponde a una ventana de aplicación solitario (no mostrada), un botón de barra de tareas de procesamiento de palabra 412 que corresponde a una ventana de aplicación de procesamiento de palabra (no mostrada),
un botón de barra de tareas de reproductor de medios 413 que corresponde a una ventana de aplicación de reproductor de medios (no mostrada) y un botón de barra de tareas de calculadora 414 que corresponde a una ventana de aplicación de calculadora (no mostrada) En este ejemplo, se proporciona una vista pequeña de Calculadora 415 La vista pequeña de Calculadora 415 presenta los contenidos actuales y actualizados de la ventana de aplicación de Calculadora En una modalidad de la presente invención, la vista pequeña de Calculadora 415 también puede actualizar la ventana de aplicación Por ejemplo, puede realizarse un cálculo a través de la vista pequeña de calculadora 415 para lograr un resultado matemático Este resultado puede presentarse en la vista pequeña de Calculadora 415 así como la ventana de aplicación de Calculadora (no mostrada) En este ejemplo, la tecla " = " se selecciona en la vista pequeña de Calculadora 415 y se presenta un resultado en la vista pequeña de Calculadora (es decir, "4") Este resultado puede reflejarse en la ventana de aplicación de Calculadora (no mostrada) así como incluso cuando el cálculo se realizo a través de la vista pequeña de Calculadora 415 La Figura 5 ilustra otra aplicación de una vista pequeña de la presente invención en la cual las vistas pequeñas se presentan en un menú de ALT-TAB Como la Figura 5 ilustra, una pantalla 500 presenta las ventanas de aplicación En este caso, una porción de una ventana de aplicación de Calculadora 502 y una porción y una ventana de aplicación de solitario 501 son visibles en la presentación
500 Cada una de las aplicaciones tiene un botón de barra de tareas correspondiente en la barra de tareas La aplicación de Calculadora tiene un botón de barra de tareas de Calculadora correspondiente 503 y la Aplicación de solitario tiene un botón de barra de tareas de solitario 504 Una aplicación de reproductor de medios también está activa (no mostrada) y un botón de Barra de Tareas de Reproductor de Medios 506 también está presente en la barra de tareas En el ejemplo ilustrado en la Figura 5, un menú ALT-TAB 505 se proporciona que presenta vistas pequeñas dinámicas de aplicaciones activas En este ejemplo, cada una de las vistas pequeñas dinámicas presenta contenido "en vivo" (es decir, actualizado) de una ventana de aplicación correspondiente El contenido de vista pequeña dinámico puede actualizarse en tiempo real Mientras las ventanas de aplicación se modifican o actualizan, la vista pequeña dinámica correspondiente también puede actualizarse por consiguiente La actualización de la vista pequeña dinámica también puede realizarse en tiempo real En este ejemplo, el menú ALT-TAB 505 contiene una vista pequeña dinámica de cada una de las aplicaciones activas, ya sea la ventana de aplicación de la aplicación correspondiente que este visible o no en la pantalla La vista pequeña de Calculadora 507, vista pequeña de Reproductor de Medios 508 y vista pequeña de solitario 509 se ilustran en el menú ALT-TAB 505 con la vista pequeña de Solitario 509 que se selecciona Cada una de las vistas pequeñas dinámicas puede proporcionar contenido "en vivo" Por ejemplo, un video puede
reproducirse en la vista pequeña del reproductor de Medios 508 en tiempo real Las Figuras 2A y 2B son diagramas que ilustran componentes de una pantalla de muestra El escritorio se representa en la Figura 2A en un gráfico de escena o árbol de presentación como elemento 200 y contiene el tapiz de escritorio 201 y dos aplicaciones, Calculadora 202 y solitario 203 Además, el escritorio además contiene una barra de tarea 208 En este método de representación, los marcos alrededor de las ventanas y el área de cliente de cada ventana son todos parte del gráfico de escena El movimiento de ventana comienza a cambiar los valores de transformación en el árbol de presentación Cada una de las aplicaciones en este ejemplo contiene un marco de ventana 204, 205, respectivamente, y contenido de ventana 206, 207, respectivamente La barra de tareas 208 contiene contenido de ventana 209 En la Figura 2A, los elementos en la pantalla se presentan de izquierda a derecha A partir de aquí el tapiz de escritorio 201 se presenta detras de la Ventana de Aplicación de Calculadora 203 que se presenta detrás de la ventana de aplicación de Solitario 202 La Figura 2B ilustra la pantalla como se representa en la Figura
2A La pantalla contiene el tapiz de escritorio 220 en el fondo La ventana de aplicación de Calculadora 222 se presenta en el frente del tapiz de escritorio y la venta de aplicación de Solitario 221 se presenta al frente de la ventana de aplicación de Calculadora 222 y el tapiz de escritorio 220 Como se muestra en la Figura 2B, cada
una de las ventanas de aplicación puede representarse por botones de barra de tareas en la barra de tareas 225 En este ejemplo, la aplicación de calculadora se representa por el botón de barra de tareas 223 en la barra de tareas 225 y el programa de aplicación de solitario se representa por el botón de barra de tareas 224 en la barra de tareas 225 Cada una de la ventana de aplicación de calculadora 222 y la ventana de aplicación de Solitaria 221 contiene un marco de ventana y un contenido de ventana como se presentó en el Tapiz de Escritorio 220 Cualquier subnodo del árbol como se ilustró en la Figura 2A puede utilizarse como el contenido de otro nodo del árbol Al hacer eso, los contenidos de una parte del árbol pueden observarse en otra ubicación en cualquier lugar del árbol Existen muchos métodos para lograr una revisión de nodo en el árbol en otra ubicación en otro lugar en el árbol Como un ejemplo no limitante, puede utilizarse Cepillo Visual 'Cepillo Visual" es una técnica utilizada para denominar una parte existente del gráfico de escena, pero para presentarlo al grupo "actual" de contexto de gráficos, tal como posición, escala, rotación, opacidad, efecto, etc. Esto causa que una porción del árbol presentado en un lugar se presente en otro lugar Por ejemplo, si una vista pequeña dinámica de la ventana de aplicación de calculadora se desea, una interfase de programación apropiada (por ejemplo, una Interfase de Programación de Aplicación o API) puede llamarse para proporcionar un HWND Huésped de Vista Pequeña o indicador de ventana Este ejemplo se demostró en las
Figuras 3A y 3B La Figura 3A es una gráfica de escena o diagrama de árbol de presentación que ilustra un ejemplo de componentes de una presentación de la presente invención El escritorio se representa en la Figura 3A como elemento o nodo 300 y contiene el tapiz de escritorio 301 y dos aplicaciones, la calculadora 302 y solitario 303 Cada una de las aplicaciones en este ejemplo contiene un marco de ventana 305, 306, respectivamente, y contenido de ventana 307, 308, respectivamente El escritorio en este ejemplo además contiene una barra de tareas 307 En este ejemplo, una vista pequeña de la ventana de aplicación de Calculadora se proporciona al llamar una API apropiadas Como se ilustra en la Figura 3A, un indicador de ventana de HWND huésped de vista pequeña 304 se crea por una aplicación y puede registrar una vista pequeña en la aplicación tal como en la aplicación de Calculadora Por ejemplo, en la Figura 3A, la barra de tareas 307 contiene un HDWN de Huésped de vista pequeña 304 y contenido de ventana 310 El HWND de Huésped de Vista Pequeña 304 contiene una vista pequeña de Calculadora 311 que puede unir una vista pequeña de la ventana de aplicación al huésped de vista pequeña La flecha punteada en la Figura 3A ilustra que la vista pequeña de Calculadora 311 del HWND Huésped de Vista Pequeña 304 señala o retira la Calculadora de la ventana de aplicación de Calculadora Como resultado, una vista pequeña "en vivo" o dinámica se proporciona y presenta el contenido actualizado de la ventana de
aplicación correspondiente (en este caso, ventana de aplicación de Calculadora) más que simplemente vistas estáticas del contenido de ventana de aplicación Como en el ejemplo de la Figura 2A, los elementos en la pantalla los resultados en la Figura 3A se presentan de izquierda a derecha A partir de aquí, el tapiz de escritorio 301 se presenta detras de la ventana de aplicación de calculadora 302 que se presenta detrás de la ventana de aplicación de Solitario 303 y la barra de tareas 308 La Figura 3B demuestra la pantalla que corresponde a la Figura 3A Como ilustra la Figura 3B, la pantalla presenta el tapiz de escritorio 320 en el fondo La ventana de aplicación de Calculadora 322 se presenta al frente del tapiz de escritorio 320 y la ventana de aplicación de Solitaria 321 se presenta al frente de la ventana de aplicación de Calculadora 322 y el tapiz de escritorio 320 También se presenta la barra de tareas 326 Cada aplicación se asocia con un botón de barra de tareas correspondiente en la barra de tareas 326 En este ejemplo, la aplicación de Calculadora se asocia con el botón de Barra de Tareas 324 y la aplicación de solitario se asocia con el botón de barra de tareas 325 Además, la Figura 3B ilustra que se proporciona una vista pequeña que se asocia con la aplicación de Calculadora El programa de aplicación de Calculadora y ventana 322 se asocia con el botón de barra de tarea 324 en la barra de tareas 326 el programa de aplicación de Solitario en la ventana 321 se asocia con el botón de barra de tareas 325
También ilustrada en la Figura 3B está una vista pequeña dinámica 323 de la ventana de aplicación de Calculadora 322 La vista pequeña 323 se proporciona por el nodo de Vista Pequeña de Calculadora 311 del HWND Huésped de Vista Pequeña 304 que señala o retira el marco de ventana 305 y contenido de ventana 308 de la aplicación de Calculadora 302 como se ilustra en la Figura 3A El resultado es una vista pequeña dinámica 323 de la ventana de aplicación de Calculadora 322 que es "en vivo", es decir, la vista pequeña se modifica mientras se hacen modificaciones correspondientes a la misma ventana de aplicación Como se ilustra en la Figura 3B, el valor de "243" calculado en la venían de aplicación de Calculadora 322 también se refleja en la vista pequeña correspondiente 323 En un aspecto de la presente invención, las vistas pequeñas dinámicas se logran a través de registro, eliminación de registro y propiedades de actualización de las vistas pequeñas Tal registro, eliminación de registro y propiedades de actualización o modificación de vistas pequeñas puede realizarse a través de mterfases de programación de aplicación (APIs) en el Administrador de Ventana de Escritorio (DWM) Se describen tres APIs ilustrativas para lograr las vistas pequeñas de la presente invención
Eiemplo 1 de API - Registro de la vista pequeña Una vista pequeña puede generarse de una ventana, por ejemplo, una ventana de aplicación La ventana de aplicación, en
este caso, es la ventana de fuente como la ventana de aplicación proporcionada para hace tal contenido de la vista pequeña En un ejemplo, la vista pequeña es una versión en miniatura de la ventana de aplicación y contiene los contenidos completos de la ventana de aplicación Alternativamente, la vista pequeña puede contener solamente una porción seleccionada de la ventana de fuente El contenido de la vista pequeña de la ventana de fuente se presenta en una segunda área Esta segunda área se designa como la ventana de destino que acomoda el contenido de la vista pequeña basándose en la venta de fuente La ventana de destino puede formar la base de la misma vista pequeña Por ejemplo, un marco de vista pequeña en una ubicación diferente a la ventana de aplicación, un área designada en la presentación, o un menú de aparición instantánea puede utilizarse como la ventana de destino para presentar la vista pequeña basándose en la ventana de aplicación Cuando se registra una vista pequeña, puede realizarse una operación que establece la relación de la ventana de fuente y la ventana de destino Un indicador de ventana (HWND) puede especificarse que designa la ventana de destino La ventana de destino puede servir como el objetivo de la vista pequeña que presenta y se obtiene por el procedimiento de llamado registrado a la vista pequeña Si el procedimiento de registrar la vista pequeña también obtiene la ventana de destino, después las alteraciones indeseadas en la aplicación por otras aplicaciones pueden evitarse Similarmente, un HWND para la ventana de fuente también puede
especificarse El tamaño de un mapa de bits guardado en memoria cache de la vista pequeña también puede especificarse Por ejemplo, un tamaño mínimo puede indicarse para que el sistema se informe del ultimo mapa de bit conocido de la ventana de fuente De esta forma, si la ventana de fuente se minimiza subsecuentemente y no esta visible en la presentación un mapa de bit de la ventana sin embargo se retiene la vista pequeña a un esta disponible El tamaño puede variar basándose en las necesidades de la aplicación de llamada Si existen múltiples registros de la misma ventana de fuente, un procedimiento puede determinar que tamaño de vista pequeña aplicara basándose en las presentes necesidades Por ejemplo, en el caso de registros múltiples de tamaño de vista pequeña variante pueden utilizarse el tamaño mas grande La API también puede comprender un indicador que representa el registro de la vista pequeña Esta vista pequeña puede ser única para el procedimiento que emite la llamada para que la vista pequeña pueda no registrarse subsecuentemente solo del procedimiento con el cual estaba registrada Un ejemplo de una API para registrar una vista pequeña es como sigue Tipodef VISTA PEQUEÑA DE INDICADOR, HRESULT DwmRegistroVistaPequeña ( HWND dstVentana
HWND srcVentana, TAMAÑO *lpTamañom?n?m?zado, HVISTAPEQUEÑA FUERA *1 phVistapequeña ) , En el cual la ventana dst representa la ventana de destino, src Ventana representa la ventana de fuente, 1p Tamaño Minimizado representa el tamaño en el cual la memoria guarda en memoria caché el último mapa de bit conocido de la ventana de fuente (src Ventana) una vez que la src Ventana se Minimiza y 1ph vista pequeña es un valor regresado que representa el indicador único que representa el registro hecho en la llamada
Eiemplo 2 de API - Modificar o establecer propiedades de vista pequeña Después del registro de vista pequeña, el contenido de la ventana de fuente, o porción de la misma, se coloca como la vista pequeña en la ventana de destino Por ejemplo, cuando se llama una Actualización de API de propiedades de vista pequeña puede modificar o actualizar propiedades de la presentación de vista pequeña en una ventana de destino Por ejemplo, las Propiedades de Vista Pequeña de actualización pueden utilizarse para establecer propiedades de las vistas pequeñas tal como visibilidad, forma, rectángulos, etc Una API de propiedades de vista pequeña de actualización puede indicar el indicador de una vista pequeña para actualizarse Las actualizaciones de las vistas pequeñas pueden
incluir cualquier modificación de la vista pequeña, que incluye pero no se limita a colocación de la vista pequeña, tamaño de la vista pequeña, porción de la ventana de fuente para utilizarse para la vista pequeña, porción de la ventana de destino para utilizarse para la vista pequeña, opacidad o transparencia de la vista pequeña, visibilidad de la vista pequeña, efectos especiales de la vista pequeña (por ejemplo, espiral, distorsión, destrozar, etc ), etc En otro ejemplo, las vistas pequeñas pueden actualizarse o modificarse de los procedimientos en los cuales se registran Un ejemplo, un indicador de vista pequeña se llama repentinamente a una ventana de destino para que la vista pequeña pueda moverse alrededor de la ventana de destino En este caso, la vista pequeña puede volverse a colocar dentro de la ventana de destino Por ejemplo, en una ventana de ALT-TB, las vistas pequeñas pueden reordenarse en orden vanante al volver a llamar a la vista pequeña a la ventana de destino Los parámetros pueden utilizarse al modificar o establecer propiedades de vista pequeña Existen muchos ejemplos de parámetros para modificar o establecer propiedades de vista pequeña tal como pero no limitándose a banderas A través de uso de los parámetros, La estructura de API puede modificarse más fácilmente lo que hace a la API mas flexible para mejoras futuras Los parámetros pueden designar propiedades de la vista pequeña para utilizarse y por si mismo pueden definirse por constantes especificas Por ejemplo, los parámetros pueden definir y
corresponder a un parámetro de ventana de fuente que define un área o porción de una ventana de fuente para utilizarse como una vista pequeña en una ventana de destino cuando se desea menos de la ventana de fuente completa para utilizarse para la vista pequeña En este ejemplo, solo la porción específica de la ventana de fuente como se indico por el parámetro de ventana de fuente se utiliza para la vista pequeña y la ventana de destino En un ejemplo, la porción de ventana de fuente para utilizarse para una vista pequeña en la ventana de destino se especifica como coordenadas de la presentación Por ejemplo, si la porción deseada es un rectángulo dentro de la ventana de fuente, la API puede especificar un parámetro para indicar las coordenadas de un rectángulo de intersección con la ventana de fuente para obtener el rectángulo final para utilizarse como la vista pequeña Como un ejemplo, las coordenadas (0, 0) pueden establecerse como la esquina izquierda superior del área de ventana Un parámetro que define que corresponde al parámetro de ventana de fuente deseada puede establecerse con el fin de indicar que solamente una porción especificada de la ventana de fuente para utilizarse como la vista pequeña, la porción especificada de la ventana de fuente que se define en términos de las coordenadas proporcionadas Aunque existen muchas formas en las cuales especificar las coordenadas y la porción deseada de la ventana de fuente, un ejemplo puede incluir utilizar la porción de la ventana de fuente definida por la intersección del rectángulo proporcionado con la ventana de fuente
real interceptada También, la porción de la ventana de destino puede utilizarse para que la vista pequeña pueda especificarse a través de un parámetro que define y corresponde a un parámetro de ventana de destino En este caso, si la ventana de destino completa no se desea utilizar para la vista pequeña y solamente una porción de la ventana de destino va a utilizarse para la vista pequeña, después el área de ventana de destino, en la cual la vista pequeña puede presentarse puede especificarse por el parámetro de ventana de destino Si este es el caso, un acercamiento se presentara solo dentro del área designada deseada como se define por el parámetro de ventana de destino (es decir, recortar la imagen cuando la presentación ocurre fuera del área designada) También, un método para determinar una locahzación de la opción de la ventana de destino en la cual la vista pequeña puede retirarse es para determinar la intersección de la porción de la ventana de destino para utilizarse y la misma ventana de destino Esto previene la presentación fuera del área de destino Además, un parámetro que define y corresponde a un parámetro de ventana de destino puede utilizarse para designar un área dentro del área designada para utilizarse como una vista pequeña de la ventana de fuente En este ejemplo, si no se define un parámetro de ventana, la ventana designada completa puede utilizarse para el contenido de vista pequeña Cualquier número de otras propiedades de vista pequeña pueden especificarse en la API, por ejemplo, opacidad o
transparencia de la vista pequeña puede especificarse En un aspecto de este ejemplo de la presente invención, un parámetro puede asignarse para designar la opacidad (o transferencia) de la vista pequeña, por ejemplo, 255 puede asignarse como completamente opaco mientras cero puede asignarse como completamente transparente De esa forma, si un parámetro que define y que corresponde a un parámetro de opacidad se establece, un valor numérico asignado designado para opacidad de la vista pequeña puede aplicarse Como un resultado, la vista pequeña puede exhibir grados vanantes de opacidad como se desea por un usuario Como un ejemplo adicional, la vista pequeña puede hacerse visible o invisible como se necesite Un parámetro que define y que corresponde a un parámetro de visibilidad puede proporcionarse El parámetro de visibilidad puede ser un valor de Boolean tal como cuando el parámetro de visibilidad es Verdadero, la vista pequeña se hace disponible mientras la vista pequeña se hace invisible si el parámetro de visibilidad es FALSO La presente invención no se limita a cualquier modificación particular de la vista pequeña como cualquier modificación de la vista pequeña estará entre el alcance de la presente invención Un ejemplo de una API para actualizar o modificar una vista pequeña es Dwm actualizar vista pequeña propiedades como sigue HRESULTADO Dwmactuahzarvistapequeñapropiedades ( HVISTAPEQUEÑA hvistapequeña ,
DWM_VISTAPEQUEÑA_PROPIEDADES*ptnProp?edades ), #def?n?r DWM_TPN_RECTDESTINO 0X00000001 #def?n?r DWM_TPN_RECTFUENTE 0X00000002 #def?n?r DWM_TPN_OPACIDAD 0X00000004 #def?n?r DWM_TNP_VISIBILIDAD 0X00000008 tipodef estructura_DWM_VISTAPEQUEÑA_PROPI EDADES ) DPALABRA dwbanderas, RECT rcDestino, RECT rcFuente, BYTE opacidad, BOOL fVisible,
) DWM_VISTAPEQUENA_PROPIEDADES, en donde dwBanderas definen parámetros o banderas que corresponde a parámetros que especifican propiedades subsecuentes para utilizarse En este ejemplo, el parámetro de rcFuente es un parámetro de ventana de fuente que especifica la región de la ventana de recurso (srcVentana) para utilizarse como vista pequeña, rcDestino es un parámetro de ventana de destino que especifica la ventana de destino (dstVentana) al que la ventana pequeña se presenta, la opacidad es un parámetro de opacidad que controla la opacidad de vista pequeña (por ejemplo, establecido de cero a 255) y fVisible es un parámetro de visibilidad que especifica la vista
pequeña como invisible o visible con base en un valor de Boolean
Ejemplo 3 de API - Quitar registro de la vista pequeña Una asociación entre la fuente y las ventanas de destino se remueve cuando ya no se necesita Por ejemplo, si una ventana ya no está activa, la asociación entre la ventana y la vista pequeña puede realizarse al eliminar el registro de la asociación Esto resulta en fuerzas de liberación Además, las vistas pequeñas pueden liberarse cuando sale el procedimiento de registro Un ejemplo de una API para eliminar registros de una vista pequeña es Dwm eliminar registro vista pequeña como sigue HRESULTADO DwmQuitarregistrodevistapequeña ( HVISTAPEQUEÑA hVistapequeña ), La Figura 6 es un cuadro de flujo que ilustra un ejemplo de un procedimiento para proporcionar vistas pequeñas, que incluye vistas pequeñas "en vivo" o dinámicas, de la presente invención En el PASO 601, se proporciona una API que puede ser una aplicación que puede solicitar una primera ventana en nivel superior o ventana de fuente para presentar una vista pequeña que también puede localizarse en una sección de una segunda ventana de nivel superior o ventana de destino A partir de aquí, la primera ventana de nivel superior o ventana de fuente puede presentarse como el objeto superior dentro de la ventana de destino Un ejemplo no limitante de
esta implementación es una ventana ALT-TAB en la cual una vista pequeña correspondiente a una ventana de fuente se proporciona dentro de la ventana ALT-TAB (es decir, la ventana de destino). En el PASO 602, una llamada de Registro se hace al DWM que puede proporcionar el indicador de vista pequeña. Pueden existir múltiples llamadas en la misma ventana de fuente o en la misma ventana de destino, en el ejemplo de ALT-TAB, múltiples llamadas en la misma ventana de fuente y la misma ventana de destino resulta en el reordenamiento de las vistas pequeñas dentro de la ventana de ALT-TAB así como proporcionar una representación mayor y/o estilizada de una vista pequeña de una aplicación cuando la vista pequeña se selecciona. En otro ejemplo, el orden Z de la vista pequeña puede alterarse por llamadas de registro subsecuentes. Si una modificación del orden z de la vista pequeña en relación a los otros elementos de presentación se desea, una nueva vista pequeña puede registrarse con otra llamada de registro de vista pequeña. Después que las propiedades se establecen para la nueva vista pequeña que corresponden a la vista pequeña anterior, la vista pequeña anterior puede eliminar si registro. De esa forma, en este ejemplo, el orden z de la vista pequeña puede cambiarse por múltiples registros de la vista pequeña. Alternativamente, pueden hacer llamadas a múltiples ventanas de fuente para la misma ventana de destino. En este ejemplo, las llamadas a múltiples ventanas de fuente para una ventana de destino resulta el proporcionar vistas pequeñas diferentes múltiples dentro
de la ventana de destino Incluso en otro ejemplo, las vistas pequeñas dinámicas pueden presentarse dentro de otras vistas pequeñas dinámicas Por ejemplo, una primera vista pequeña dinámica con un orden z superior puede colocarse en una vista pequeña dinámica mayor de una aplicación con un orden z inferior En este ejemplo, las vistas pequeñas pueden insertarse dentro de otras vistas pequeñas Además, los secretos pueden aplicarse a cualquiera de las vistas pequeñas o cualquiera de las vistas pequeñas insertadas Alternativamente, las vistas pequeñas de cualquier orden z pueden formarse en cascada en otra vista pequeña o cualquier orden z Por ejemplo, al menos una vista pequeña (sin importar el orden z) puede colocarse en una vista pequeña dinámica mayor de una aplicación de cualquier orden z De forma similar, la vista pequeña dinámica mayor puede colocarse en otra vista pequeña dinámica de cualquier orden z. De esa forma, las vistas pequeñas pueden colocarse en cascada sin importar el orden z En el PASO 603, el DWM registro el par de procedimiento/ID para la vista pequeña El DWM además puede mantener una vista global de registros de vista pequeña en la cual cada aplicación se pone en par con un indicador de vista pequeña (HDWM) correspondiente La lista global puede mantenerse en una variedad de formas dependiendo de las necesidades del usuario Por ejemplo, una forma conveniente para mantener la lista global es indexar las vistas pequeñas por la ventana de destino (destVentana) para que
cualquier ventana de destino deseada pueda accederse eficientemente También, las vistas pequeñas o cualquier ventana de destino particular ademas pueden organizarse en un orden lógico, tal como en orden de traslape o basándose en orden z En otro ejemplo el DWM puede "ajustar" los contenidos de una ventana (es decir, guardar los contenidos actuales de la ventana en el momento) antes que la ventana se minimice El DWM ajusta los contenidos de la ventana, por ejemplo, en un mapa de bit de tamaño particular El tamaño puede determinarse por la API de registro y es un tamaño apropiado para delineado de vista pequeña Después que se minimiza la ventana, los contenidos de la ventana ya están conservados para que la vista pequeña que corresponde a la ventana de aplicación aun pueda estar disponible Alternativamente, las ventanas que se minimizan pueden "colocarse" temporalmente fuera de pantalla mas que minimizar verdaderamente En este ejemplo, las aplicaciones pueden continuar al enviar información y datos para actualizar las vistas pequeñas De esa forma, si ocurre registro de vista pequeña después que una ventana de aplicación se "minimiza", las vistas pequeñas aun pueden registrarse y actualizarse como si la ventana no se hubiera minimizado Alternativamente, las vistas pequeñas pueden reemplazarse por iconos o barras de captura si el registro de vista pequeña no es factible En el PASO 604, las actualizaciones a propiedades de vista pequeña se determinan e implementan Al modificar o actualizar propiedades de vista pequeña, el DWM puede modificar la lista
global por consiguiente Por ejemplo, la aplicación DWM puede agregar vistas pequeñas a su escenografía (por ejemplo, Figura 2A o Figura 3A en la cual el nodo de ventana de nivel superior apropiado que representa a la ventana objetivo se retira de la ventana de fuente (es decir, sre de Ventana) basándose en instrucciones de dibujo adicionales Cualquier otra de las alteraciones o efectos especificados para la vista pequeña también pueden incorporarse, por ejemplo, escala colocación, opacidad, invisibihdad o efectos especiales En el PASO 605, la vista pequeña se modifica basándose en instrucciones recibidas Por ejemplo, una API de vista pequeña de actualización puede modificar la visibilidad del nodo de vista pequeña y el parámetro fVisible es VERDADERO o la API de Vista Pequeña de Actualización puede aumentar (o disminuir) la opacidad de vista pequeña Después que todas las modificaciones deseadas a la vista pequeña se realizan, el procedimiento de DWM determina si la eliminación del registro de la vista pequeña se desea Este procedimiento debe determinar si una eliminación del registro de la vista pequeña se desea puede realizarse de forma separada del procedimiento de Actualizar Vista Pequeña En este caso, la eliminación de registro puede ocurrir debido a una llamada API de Eliminar Registro de Vista Pequeña (no mostrada) En el PASO 606, se determina si una API de eliminación de registro se recibe por el procedimiento de DWM Si se recibe la API de eliminación de registro el par del procedimiento y la ID de vista pequeña
correspondiente se remueve (por ejemplo, de la lista global de registros de vista pequeña mantenidos en el procedimiento DWM) En el PASO 607, la corriente de instrucción de ventana de nivel superior se remite como un resultado de la vista pequeña que se elimina de registro Como resultado, la vista pequeña se remueve En un ejemplo, un cursor se hace flotar sobre un botón de barra de tareas que resulta en la representación de la vista pequeña de la aplicación correspondiente Cuando se hace flotar el cursor sobre el botón de barra de tareas, el procedimiento crea un nuevo indicador de ventana de nivel superior (HWND) que aloja una vista pequeña El procedimiento llama a una API de registro que utiliza el indicador de ventana (HWND) de la aplicación como la fuente del contenido para la vista pequeña (es decir srcVentana) El nuevo HWND de nivel superior que aloja la vista pequeña es la ventana de destino (dstVentana) El contenido de la ventana de fuente, o una porción deseada de la misma, después se coloca en la ventana de destino para presentar la vista pequeña La vista pequeña puede contener el contenido de ventana de fuente completa o puede contener sólo una porción predeterminadas seleccionadas como se menciono anteriormente La API de Actualizar Vista Pequeña puede modificar o mover la vista pequeña Por ejemplo, la vista pequeña puede volverse a colocar en relación al icono correspondiente o efectos especiales pueden aplicarse a la vista pequeña (por ejemplo, transparencia, invisibihdad, distorsión, etc ) Cuando el cursor se aleja del botón de barra de tareas, el HWND de nivel superior que
aloja la vista pequeña puede eliminarse de registro para que se oculte la vista pequeña Alternativamente, la vista pequeña puede actualizarse para ser invisible para que la vista pequeña aun este registrada y pueda invocarse subsecuentemente Gen un método alternativo, cada ventana con la creación puede asignarse una vista pequeña creada para esta con la barra de tarea En este ejemplo, el código de barra de tarea puede utilizarse para manipular la visibilidad de estás pequeñas y rectángulo de destino para colocación de la vista pequeña, por ejemplo Se entiende que aspectos de la presente invención pueden tomar muchas formas y modalidades En modalidades mostradas en donde se pretende ilustra más que limitar la invención, se aprecia que pueden hacerse variaciones sin apartarse del espíritu del alcance de la invención Aunque las modalidades ilustrativas de la invención se mostraron y describieron, una amplia escala de modificación, cambia y substitución se pretende en la descripción anterior y en algunos casos algunas características de la presente invención pueden emplearse sin un uso correspondiente de las otras características Por consiguiente, es apropiado que las reivindicaciones anexas se interpreten ampliamente y en una forma consiste con el alcance de la invención