![Page 1: PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS. Programación MultimediaProgramación en Windows © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/2.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/3.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/4.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/5.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/6.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/7.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/8.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/9.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/10.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/11.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/12.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/13.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/14.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/15.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/16.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/17.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/18.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/19.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/20.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/21.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/22.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/23.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/24.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/25.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/26.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/27.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/28.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/29.jpg)
© 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](https://reader035.vdocuments.site/reader035/viewer/2022062309/5665b4901a28abb57c9236b4/html5/thumbnails/30.jpg)
PROGRAMACIÓN MULTIMEDIA
PROGRAMACIÓN EN WINDOWS