windows api ronald fica windows api - udecronaldvalenzuel/ucsc/clase02.pdf17 de agosto de 2009...

30
Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci´on ungara Ciclo de Aplicaci´on Windows API Ronald Valenzuela Fica UCSC, Concepci´ on, Chile 17 de Agosto de 2009

Upload: others

Post on 17-Aug-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Windows API

Ronald Valenzuela Fica

UCSC, Concepcion, Chile

17 de Agosto de 2009

Page 2: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Clase Anterior

Etapas de la CompilacionPreprocesamientoCompilacionEnsamblajeEnlace

Herramientas para CompilarMakefile

Herramientas para DesarrolloIDE (Entornos graficos para administrar proyectos)

Page 3: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Hoy

1 API’sEjemplos

2 Windows APIHello WorldUnicodeNotacion HungaraCiclo de Aplicacion

Page 4: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

API’s

API: Application programming interface.

Conjunto de funciones y procedimientos ofrecida por una bibliotecapara ser utilizada por otro software como una capa de abstraccion.

Proporcionan funciones de uso general, como por ejemplo paragenerar ventanas, iconos en pantalla, manejar dispositivos, obtenerinformacion de un sistema, etc.

Page 5: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Ejemplos de API

OpenGL (Open Graphics Library)

Desarollada por Silicon Graphics.Estandar para aplicaciones graficas.Diferentes tarjetas graficas, mismos procedimientos paralos programadores.

GLUT, otra API que facilita la programacion con OpenGL.Manejo de ventanas, y dispositivos de entrada (mouse,teclado, etc.).

Page 6: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

The Windows API

Windows API: Es la interfaz de programacion de aplicaciones de Microsoft. Proporciona los serviciosutilizados por todas las aplicaciones basadas en Windows. Permite acceder a la interfaz grafica, recursos desistema, audio, red, etc.

Las funciones de Win32 API se pueden agrupar en:

Gestion de ventanas

Controles de ventanas

Manejo de la consola

Interfaz de dispositivos graficos (GDI)

Servicios del sistema

Internacionalizacion

Servicios de red

Page 7: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Subsistemas

El corazon de Windows esta implementado en 3 DLLs, las que contienen los 3 subsistemas fundamentales delSO.

Kernel (kernel32.dll): encargada de la administracion de la memoria, la gestion de procesos yfunciones de E/S de datos

User (user32.dll): implementa la interfaz de usuario y la logica de manejo de las ventanas

GDI (gdi32.dll): Graphics Device Interface, permite el despliegue de texto y graficos en monitores eimpresoras.

Estas 3 bibliotecas estan siempre presentes en memoria RAM.

Para utilizar las funciones contenidas en estas bibliotecas necesitamos conocer sus ubicaciones en la memoria,

esta se resuelve a traves de las bibliotecas que son importadas al compilar el proyecto (al enlazar).

Page 8: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Hello World

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance , HINSTANCE hPrevInstance ,

PSTR szCmdLine , int iCmdShow)

{

MessageBox (NULL , TEXT ("Hello , INF4201 en Windows!"),

TEXT ("HelloMsg"), 0) ;

return 0 ;

}

WINDOWS.H es un archivo maestro que incluye otras cabeceras, algunos de los mas importantes son:

WINDEF.H Definiciones basicas.

WINNT.H Definiciones para el soporte Unicode.

WINBASE.H Funciones del Kernel.

WINUSER.H Funciones de interfaz de usuario.

WINGDI.H Funciones de interfaz de dispositivos graficos.

Page 9: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Hello World

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance , HINSTANCE hPrevInstance ,

PSTR szCmdLine , int iCmdShow)

{

MessageBox (NULL , TEXT ("Hello , INF4201 en Windows!"),

TEXT ("HelloMsg"), 0) ;

return 0 ;

}

El punto de entrada esta declarado en winbase.h como sigue:

int // return type

WINAPI // #define WINAPI __stdcall (Convencion usada al compilar)

WinMain(

HINSTANCE hInstance , // Un numero que identifica al programa

HINSTANCE hPrevInstance , // Este parametro siempre es NULL

// Se utilizaba antes para identificar otras instancias del programa ..

LPSTR lpCmdLine , // Un puntero a los argumentos de la linea de comandos

int nShowCmd // Estado en que se inicia (SW_HIDE ,SW_MAXIMIZE , etc ...).

);

Page 10: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Hello World

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance , HINSTANCE hPrevInstance ,

PSTR szCmdLine , int iCmdShow)

{

MessageBox (NULL , TEXT ("Hello , INF4201 en Windows!"),

TEXT ("HelloMsg"), 0) ;

return 0 ;

}

La funcion MessageBox crea un cuadro de dialogo con un mensaje arbitrario:

int MessageBox(

HWND hWnd , // handle of owner window

LPCTSTR lpText , // address of text in message box

LPCTSTR lpCaption , // address of title of message box

UINT uType // style of message box

);

Page 11: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Hello World

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance , HINSTANCE hPrevInstance ,

PSTR szCmdLine , int iCmdShow)

{

MessageBox (NULL , TEXT ("Hello , INF4201 en Windows!"),

TEXT ("HelloMsg"), 0) ;

return 0 ;

}

La funcion MessageBox crea un cuadro de dialogo con un mensaje arbitrario:

int MessageBox(

HWND hWnd , // handle of owner window

LPCTSTR lpText , // address of text in message box

LPCTSTR lpCaption , // address of title of message box

UINT uType // style of message box

);

Page 12: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

UNICODE: Cuando no basta con ASCII

Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex

0 00 NUL 16 10 DLE 32 20 48 30 0 64 40 @ 80 50 P 96 60 ‘ 112 70 p

1 01 SOH 17 11 DC1 33 21 ! 49 31 1 65 41 A 81 51 Q 97 61 a 113 71 q

2 02 STX 18 12 DC2 34 22 " 50 32 2 66 42 B 82 52 R 98 62 b 114 72 r

3 03 ETX 19 13 DC3 35 23 # 51 33 3 67 43 C 83 53 S 99 63 c 115 73 s

4 04 EOT 20 14 DC4 36 24 $ 52 34 4 68 44 D 84 54 T 100 64 d 116 74 t

5 05 ENQ 21 15 NAK 37 25 % 53 35 5 69 45 E 85 55 U 101 65 e 117 75 u

6 06 ACK 22 16 SYN 38 26 & 54 36 6 70 46 F 86 56 V 102 66 f 118 76 v

7 07 BEL 23 17 ETB 39 27 ’ 55 37 7 71 47 G 87 57 W 103 67 g 119 77 w

8 08 BS 24 18 CAN 40 28 ( 56 38 8 72 48 H 88 58 X 104 68 h 120 78 x

9 09 HT 25 19 EM 41 29 ) 57 39 9 73 49 I 89 59 Y 105 69 i 121 79 y

10 0A LF 26 1A SUB 42 2A * 58 3A : 74 4A J 90 5A Z 106 6A j 122 7A z

11 0B VT 27 1B ESC 43 2B + 59 3B ; 75 4B K 91 5B [ 107 6B k 123 7B {

12 0C FF 28 1C FS 44 2C , 60 3C < 76 4C L 92 5C \ 108 6C l 124 7C |

13 0D CR 29 1D GS 45 2D - 61 3D = 77 4D M 93 5D ] 109 6D m 125 7D }

14 0E SO 30 1E RS 46 2E . 62 3E > 78 4E N 94 5E ^ 110 6E n 126 7E ~

15 0F SI 31 1F US 47 2F / 63 3F ? 79 4F O 95 5F _ 111 6F o 127 7F DEL

$

Solo se necesitaba 7 bits para almacenar la informacion sobrecaracteres y aun sobran 128 numeros!!.

El problema es que todos los lenguajes del mundo,simplemente no pueden ser representados por 256 codigosde 8 bits.Desde Windows NT se introduce soporte UNICODE.Unicode es un sistema uniforme de 16 bits que permite larepresentacion de 65.536 caracteres.

Page 13: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

UNICODE: Cuando no basta con ASCII

El problema es que todos los lenguajes del mundo,simplemente no pueden ser representados por 256 codigosde 8 bits.

Desde Windows NT se introduce soporte UNICODE.

Unicode es un sistema uniforme de 16 bits que permite larepresentacion de 65.536 caracteres.

Page 14: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

UNICODE: Cuando no basta con ASCII

El problema es que todos los lenguajes del mundo,simplemente no pueden ser representados por 256 codigosde 8 bits.

Desde Windows NT se introduce soporte UNICODE.

Unicode es un sistema uniforme de 16 bits que permite larepresentacion de 65.536 caracteres.

Page 15: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

UNICODE: Cuando no basta con ASCII

El problema es que todos los lenguajes del mundo,simplemente no pueden ser representados por 256 codigosde 8 bits.

Desde Windows NT se introduce soporte UNICODE.

Unicode es un sistema uniforme de 16 bits que permite larepresentacion de 65.536 caracteres.

Page 16: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Wide Characters and C

La idea de usar caracteres de 16 bits para programar ya habıa sidodesarrollada en ANSI C.Este define el set de caracteres conocido como Wide-Characters:

typedef unsigned short wchar_t;

wchar_t * pw = L"Hello!" ;

iWrongLength = strlen (pw) ;

iRightLength = wcslen (pw) ;

Page 17: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Wide Characters and C

La idea de usar caracteres de 16 bits para programar ya habıa sidodesarrollada en ANSI C.Este define el set de caracteres conocido como Wide-Characters:

typedef unsigned short wchar_t;

wchar_t * pw = L"Hello!" ;

iWrongLength = strlen (pw) ;

iRightLength = wcslen (pw) ;

Page 18: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Como mantener compatibilidad?

Gracias a TCHAR:

// Algunas de las cosas que hace tchar.h

#ifdef UNICODE

typedef wchar_t TCHAR ;

#define _tcslen wcslen;

#define __T(x) L##x

#else

typedef char TCHAR ;

#define _tcslen strlen;

#define __T(x) x;

#endif

Page 19: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Como mantener compatibilidad?

Ademas con Windows:#ifdef UNICODE

typedef WCHAR TCHAR , * PTCHAR ;

typedef LPWSTR LPTCH , PTCH , PTSTR , LPTSTR ;

typedef LPCWSTR LPCTSTR ;

#else

typedef char TCHAR , * PTCHAR ;

typedef LPSTR LPTCH , PTCH , PTSTR , LPTSTR ;

typedef LPCSTR LPCTSTR ;

#endif

WINUSERAPI int WINAPI MessageBoxA (HWND hWnd , LPCSTR lpText ,

LPCSTR lpCaption , UINT uType) ;

WINUSERAPI int WINAPI MessageBoxW (HWND hWnd , LPCWSTR lpText ,

LPCWSTR lpCaption , UINT uType) ;

Page 20: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Hello Again

Basta con utilizar TCHAR! y la macro TEXT(x)

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance , HINSTANCE hPrevInstance ,

PSTR szCmdLine , int iCmdShow)

{

MessageBox (NULL , TEXT ("Hello , INF4201 en Windows!"),

TEXT ("HelloMsg"), 0) ;

return 0 ;

}

Page 21: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Notacion Hungara

En la programacion en Windows, los nombres de variables siguen un formato llamado notacionhungara.

Se antepone a cada variable un prefijo en minusculas que indica su tipo.

Prefix Data Typec char or WCHAR or TCHAR

by BYTE (unsigned char)n shorti int

x, y int used as x-coordinate or y-coordinatecx, cy int used as x or y length; c stands for count”b or f BOOL (int); f stands for ”flag”

w WORD (unsigned short)l LONG (long)

dw DWORD (unsigned long)fn functions stringsz string te rminated by 0 characterh handlep pointer

Page 22: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Ciclo de una Aplicacion

Page 23: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Ciclo de una Aplicacion

Registrando la ventana:La estructura WNDCLASS.typedef struct

{

UINT style ;

WNDPROC lpfnWndProc ;

int cbClsExtra ;

int cbWndExtra ;

HINSTANCE hInstance ;

HICON hIcon ;

HCURSOR hCursor ;

HBRUSH hbrBackground ;

LPCTSTR lpszMenuName ;

LPCTSTR lpszClassName ;

}

WNDCLASS , * PWNDCLASS ;

Page 24: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Ciclo de una Aplicacion

Registrando la ventana:

static TCHAR szAppName [] = TEXT ("HelloWin") ;

HWND hwnd ;

MSG msg ;

WNDCLASS wndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc = WndProc ;

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = 0 ;

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (NULL , IDI_APPLICATION) ;

wndclass.hCursor = LoadCursor (NULL , IDC_ARROW) ;

wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;

wndclass.lpszMenuName = NULL ;

wndclass.lpszClassName = szAppName ;

if (! RegisterClass (& wndclass ))

{

MessageBox (NULL , TEXT ("This program requires Windows NT!"),

szAppName , MB_ICONERROR) ;

return 0 ;

}

Page 25: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Ciclo de una Aplicacion

Creando la ventana:hwnd = CreateWindow (szAppName , // window class name

TEXT ("The Hello Program"), // window caption

WS_OVERLAPPEDWINDOW , // window style

CW_USEDEFAULT , // initial x position

CW_USEDEFAULT , // initial y position

CW_USEDEFAULT , // initial x size

CW_USEDEFAULT , // initial y size

NULL , // parent window handle

NULL , // window menu handle

hInstance , // program instance handle

NULL) ; // creation parameters

Page 26: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Ciclo de una Aplicacion

Creando la ventana:hwnd = CreateWindow (szAppName , // window class name

TEXT ("The Hello Program"), // window caption

WS_OVERLAPPEDWINDOW , // window style

CW_USEDEFAULT , // initial x position

CW_USEDEFAULT , // initial y position

CW_USEDEFAULT , // initial x size

CW_USEDEFAULT , // initial y size

NULL , // parent window handle

NULL , // window menu handle

hInstance , // program instance handle

NULL) ; // creation parameters

// Crea la ventana en el modo especificado al arrancar

// el programa (SW_SHOWNORMAL , SW_SHOWMAXIMIZED ,SW_SHOWMINNOACTIVE)

ShowWindow (hwnd , iCmdShow) ;

// Hace que se pinte la pantalla , de otra forma solo se pintara el

// color de fondo

UpdateWindow (hwnd) ;

Page 27: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Ciclo de una Aplicacion

El bucle de mensajes:

while (GetMessage (&msg , NULL , 0, 0))

{

TranslateMessage (&msg) ;

DispatchMessage (&msg) ;

}

La funcion de CALLBACK:RESULT CALLBACK WndProc (HWND hwnd , UINT message ,

WPARAM wParam , LPARAM lParam)

Page 28: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Ciclo de una Aplicacion

LRESULT CALLBACK WndProc (HWND hwnd , UINT message ,

WPARAM wParam , LPARAM lParam)

{

HDC hdc ;

PAINTSTRUCT ps ;

RECT rect ;

switch (message)

{

case WM_CREATE:

PlaySound (TEXT ("hellowin.wav"), NULL , SND_FILENAME | SND_ASYNC) ;

return 0 ;

case WM_PAINT:

hdc = BeginPaint (hwnd , &ps) ;

GetClientRect (hwnd , &rect) ;

DrawText (hdc , TEXT ("Hello , Windows 98!"), -1, &rect ,

DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

EndPaint (hwnd , &ps) ;

return 0 ;

case WM_DESTROY:

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd , message , wParam , lParam) ;

}

Page 29: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Bibliografıa

Biblioteca en lınea MSDN.

C. Petzold, ”Programming Windows”, 5ta. Ed., MicrosoftPress, 1998.

J. Pascual Sancho, F. Charte Ojeda, M. Segarra Martnez,”Programacion Avanzada en Windows 2000”, OsborneMcGraw-Hill, 2000.

Mark E. Russinovich, David A. Solomon, ”WindowsInternals”, Microsoft Press, 2005.

Page 30: Windows API Ronald Fica Windows API - UdeCronaldvalenzuel/ucsc/Clase02.pdf17 de Agosto de 2009 Windows API Ronald Valenzuela Fica API’s Ejemplos Windows API Hello World Unicode Notaci

Windows API

RonaldValenzuela

Fica

API’s

Ejemplos

Windows API

Hello World

Unicode

NotacionHungara

Ciclo deAplicacion

Proxima Clase

Laboratorio:

Nuestra primera aplicacion de windows.

Clase Lunes 24 :

Mas sobre ventanas...