<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="tech-gdk" xml:lang="es">
<info>
<link type="guide" xref="tech" group="gdk"/>
<revision pkgversion="3.0" date="2011-04-05" status="candidate"/>
<credit type="author copyright">
<name>Shaun McCance</name>
<email its:translate="no">shaunm@gnome.org</email>
<years>2011–2012</years>
</credit>
<include xmlns="http://www.w3.org/2001/XInclude" href="cc-by-sa-3-0.xml"/>
<desc>Abstracción de bajo nivel para el sistema de ventanas</desc>
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
<mal:name>Daniel Mustieles</mal:name>
<mal:email>daniel.mustieles@gmail.com</mal:email>
<mal:years>2011-2017</mal:years>
</mal:credit>
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
<mal:name>Jorge González</mal:name>
<mal:email>jorgegonz@svn.gnome.org</mal:email>
<mal:years>2007-2010</mal:years>
</mal:credit>
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
<mal:name>Mario Carrión</mal:name>
<mal:email>mario@monouml.org</mal:email>
<mal:years>2006</mal:years>
</mal:credit>
</info>
<title>GDK</title>
<p>GDK es la biblioteca de bajo nivel que usa <link xref="tech-gtk">GTK+</link> para interactuar con el sistema de ventanas para los dispositivos gráficos y de entrada. Aunque rara vez usará GDK directamente en el código de la aplicación, contiene toda la funcionalidad necesaria para crear ventanas de bajo nivel en la pantalla y para interactuar con el usuario con varios dispositivos de entrada. GDK actúa como una capa de abstracción sobre varios sistemas de ventanas, por lo que GTK+ se puede usar en todos ellos: el sistema X-Window (X11), Microsoft Windows y Mac OS X Quartz.</p>
<p>GDK le permite acceder a eventos del teclado, del ratón y a otros dispositivos de entrada. Las implementaciones de widgets en GTK+ usan esta funcionalidad, y traducen los eventos en señales de alto nivel que se pueden usar desde el código de la aplicación. Por ejemplo, un widget <code>GtkButton</code> registrará los eventos <code>GDK_BUTTON_PRESS</code> y <code>GTK_BUTTON_RELEASE</code>, que provienen del ratón, y los traducirá a la señal <code>GtkButton::clicked</code> cuando el usuario pulsa y suelta el botón el ubicación adecuada.</p>
<p>GDK también proporciona rutinas de bajo nivel para acceder a los datos de arrastrar y soltar y del portapapeles del sistema. Cuando implemente controles personalizados, quizá deba acceder a estas características para implementar un comportamiento adecuado de la interacción con el usuario.</p>
<p>GDK proporciona otra funcionalidad necesaria para implementar un toolkit gráfico completo como GTK+. Ya que GDK actúa como una plataforma de abstracción, permitiendo que GTK+ se ejecute en múltiples entornos, proporciona una API para todas las funcionalidades del sistema que necesita GTK+. Esto incluye información acerca configuraciones multimonitor, resolución y profundidad de color, mapas de colores y cursores.</p>
<p>Debería usar GDK siempre que necesite acceso de bajo nivel al sistema de ventanas, incluyendo acceso a bajo nivel para eventos, ventanas y al portapapeles. Usar GDK para estas tareas asegura que su código es portable y se integra con el resto de su código GTK+. Generalmente no deberían usarse las rutinas de dibujado simple en GDK; estas se dejan para cuando GDK simplemente envuelve las primitivas de dibujado del sistema de ventanas. En su lugar, debería usar la extensa funcionalidad que proporciona <link xref="tech-cairo">Cairo</link> para dibujar gráficos 2D de alta calidad.</p>
<list style="compact">
<item><p><link href="https://developer.gnome.org/gdk3/stable/">Manual de referencia de GTK+</link></p></item>
</list>
</page>