30
PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS

PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

Embed Size (px)

Citation preview

Page 1: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

PROGRAMACIÓN MULTIMEDIA

PROGRAMACIÓN EN WINDOWS

Page 2: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

2

Programación Multimedia Programación en Windows

Estructura de un programa Windows

Mensajes

Compilación de un programa Windows

Aportaciones de la programación en Windows

Ejemplos de mensajes

Page 3: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

3

Programación Multimedia Programación en Windows

Diseño de interfaces

Transparencia

Multitarea

Aportaciones de la programación en Windows

Page 4: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

4

Programación Multimedia Programación en Windows

Compilación de un programa Windows

- Diferencia los recursos (menús, iconos, diálogos, bitmaps) del código.

- Archivos implicados:*.rc , *.ico -> *.res*.c , *.h -> *.obj*.obj, *.res, *.def -> *.exe

Page 5: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

5

Programación Multimedia Programación en Windows

Compilación de un programa Windows (2)

/* generic.h*/

#define IDM_DOIT 1#define IDM_QUIT 2

int ghInstance;char gszAppName[] = “generic”;

long FAR PASCAL WndProc (HWND, unsigned, WORD, LONG);

Page 6: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

6

Programación Multimedia Programación en Windows

Compilación de un programa Windows (3)

Archivos RC:

/*generic.rc */#include <windows.h>#include “generic.h”generic ICON generic.icogeneric MENU BEGIN

MENUITEM “&Do It!” IDM_DOITMENUITEM “&Quit”, IDM_QUIT

END

Page 7: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

7

Programación Multimedia Programación en Windows

Compilación de un programa Windows (y 4)

Archivos DEF:

NAME GENERICDESCRIPTION ‘generic windows program’EXETYPE WINDOWSSTUB ‘WINSTUB.EXE’CODE PRELOAD MOVEABLEDATA PRELOAD MOVEABLE MULTIPLEHEAPSIZE 1024STACKSIZE 5120EXPORTS WndProc

Page 8: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

8

Programación Multimedia Programación en Windows

Estructura de un programa Windows

La mayoría de los programas en Windows tienen dos funciones comunes:

- Winmain()- WndProc()

Page 9: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

9

Programación Multimedia Programación en Windows

Estructura de un programa Windows (2)

WinMain() - Es el punto de entrada y salida del programa.

- Se encarga del aspecto de la ventana principal.

- Contiene el bucle de mensajes.

Page 10: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

10

Programación Multimedia Programación en Windows

Estructura de un programa Windows (3)

WndProc() - Se la conoce como “función de procesado de mensajes”.

- En ella se escribe el código del programa.

Page 11: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

11

Programación Multimedia Programación en Windows

Estructura de un programa Windows (4)

#include <windows.h>

long FAR PASCAL WndFunction (HWND, WORD, WORD, LONG);

int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{ static char szAppName[]= "GENERIC",

szTitleBar[]= "Title Bar";

HWND hwnd; WNDCLASS wndclass; MSG msg;

Page 12: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

12

Programación Multimedia Programación en Windows

Estructura de un programa Windows (5)

if (! hPrevInstance) { wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndFunction; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor (NULL, IDC_ARROW); wndclass.hbrBackground= GetStockObject (WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName= szAppName; RegisterClass (&wndclass);

}

Page 13: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

13

Programación Multimedia Programación en Windows

Estructura de un programa Windows (6)

hwnd= CreateWindow (szAppName, szTitleBar, WS_OVERLAPPEDWINDOW, 0, /* x position for this window */ 0, /* y position for this window */ 320, /* window width is 320 dots */ 240, /* window height is 240 dots */ NULL, NULL, hInstance, NULL);

ShowWindow (hwnd, nCmdShow); UpdateWindow (hwnd);

Page 14: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

14

Programación Multimedia Programación en Windows

Estructura de un programa Windows (7)

while (TRUE == GetMessage (&Message,0,0,0))

{TranslateMessage (&Message);DispatchMessage (&Message);

}

}

Page 15: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

15

Programación Multimedia Programación en Windows

Estructura de un programa Windows (8)

long FAR PASCAL WndFunction (HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)

{ HDC hdc; PAINTSTRUCT ps; RECT rect;

Page 16: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

16

Programación Multimedia Programación en Windows

Estructura de un programa Windows (y 9)

switch (wMsg) {

case WM_PAINT: hdc= BeginPaint (hWnd, &ps); GetClientRect (hWnd, &rect);

DrawText (hdc, "Application Window", -1, &rect, DT_SINGLELINE | DT_CENTER |

DT_VCENTER); EndPaint (hWnd, &ps); return (0);

break;

case WM_DESTROY: PostQuitMessage (0); return (0);

break; default: return (DefWindowProc (hWnd, wMsg, wParam,

lParam));}

}

Page 17: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

17

Programación Multimedia Programación en Windows

MensajesInterrupciones

“Hardware”

Cola de mensajes

GetMessage()TranslateMessage()DispatchMessage()

WndProc()

DefWindowProc()

Hook()

Bucle de mensajes

Lógica y acciones del programa

Procesado de mensajes “por defecto”

Page 18: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

18

Programación Multimedia Programación en Windows

Mensajes (2)

Cola de mensajes

Bucle de mensajes

WndProc()

Hardware

PostMessage()

TransMessage

SendMessage()

Otras aplicaciones. PostMessage()

Otras aplicaciones. SendMessage()

DispatchMessage()

Page 19: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

19

Programación Multimedia Programación en Windows

Mensajes (3)/* Estructura mensaje*/

typedef struct tagMSG{

HWND hwnd;WORD message;WORD wparam;LONG lparam;DWORD time;POINT pt;

} MSG;

typedef MSG *PMSGtypedef MSG NEAR *NPMSGtypedef MSG FAR *LPMSG

Page 20: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

20

Programación Multimedia Programación en Windows

Mensajes (y 4)

Funciones para controlar la prioridad de las aplicaciones:

- GetMessage()

- PeekMessage()

- WaitMessage()

Page 21: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

21

Programación Multimedia Programación en Windows

Ejemplos de Mensajes

BM_ : Mensaje de botón.

BM_GETCHECKBM_SETCHECK

Page 22: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

22

Programación Multimedia Programación en Windows

Ejemplos de Mensajes (2) CB_: Mensaje de “Combo Box”

CB_ADDSTRINGCB_FINDSTRINGCB_FINDSTRINGEXACT CB_GETCURSEL CB_GETLBTEXT CB_GETLBTEXTLENGTH CB_SELECTSTRING

Page 23: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

23

Programación Multimedia Programación en Windows

Ejemplos de Mensajes (3) EM_: Mensaje de caja de texto EM_LIMITTEXT LB_: Mensaje de “List Box” LB_ADDSTRING LB_GETCURSEL LB_GETTEXT LB_GETTEXTLEN LB_INSERTSTRING

Page 24: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

24

Programación Multimedia Programación en Windows

Ejemplos de Mensajes (4) SBM_: Mensaje de “Scroll Box” SBM_GETPOS SBM_GETRANGE SBM_GETSCROLLINFO SBM_SETPOS SBM_SETRANGE SBM_SETSCROLLINFO

Page 25: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

25

Programación Multimedia Programación en Windows

WM_: Todos los demás mensajes WM_CHAR WM_KEYDOWN WM_KEYUP WM_CREATE WM_DEADCHAR

WM_GETMINMAXINFOWM_GETTEXTWM_GETTEXTLENGTH WM_INITDIALOG WM_DESTROY

Ejemplos de Mensajes (5)

Page 26: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

26

Programación Multimedia Programación en Windows

Ejemplos de Mensajes (6)

WM_PAINT WM_QUIT

WM_HSCROLL WM_VSCROLL WM_SETTEXT WM_TIMER

Page 27: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

27

Programación Multimedia Programación en Windows

Ejemplos de Mensajes (7)

Mensaje WM_PAINTDefinición:

Una aplicación envia un mensaje WM_PAINT cuando Windows u otra aplicación hace una petición para pintar una porción de la ventana de la aplicación. El mensaje es enviado cuando las funciones UpdateWindow o RedrawWindow son llamadas o por la función DispatchMessage cuando la aplicación obtiene un mensaje WM_PAINT tras el uso de las funciones GetMessage o PeekMessage.

Page 28: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

28

Programación Multimedia Programación en Windows

Descripción:

Este mensaje no tiene parámetros.

Valor de retorno:

Una aplicación debe retornar con cero si procesa este mensaje.

Ejemplos de Mensajes (8)

Page 29: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

29

Programación Multimedia Programación en Windows

Acción por defecto:

La función DefWindowProc valida la región a actualizar. La función también enviará un mensaje WM_NCPAINT al procedimiento de ventana si el marco de la ventana ha de ser pintado y envía un mensaje WM_ERASEBKGND si el fondo de la ventana debe ser borrado.

Ejemplos de Mensajes (y 9)

Page 30: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación

PROGRAMACIÓN MULTIMEDIA

PROGRAMACIÓN EN WINDOWS