windows.h
windows.h es un archivo cabecera específico de Windows para la programación en lenguaje C/C++ que contiene las declaraciones de todas las funciones de la biblioteca Windows API, todas las macros utilizadas por los programadores de aplicaciones para Windows, y todas las estructuras de datos utilizadas en gran cantidad de funciones y subsistemas. La Win32 API puede agregarse en proyectos de programación en C haciendo la inclusión de la cabecera <windows.h>
Archivos de cabeceras incluidos
[editar]windows.h incluye automáticamente gran cantidad de otras cabeceras. Muchas de ellas no pueden incluirse por sí mismas, por una cuestión de dependencias.
windows.h incluye los siguientes archivos cabeceras:
- excpt.h – manejo de excepciones
- stdarg.h – funciones de variable-argumento (cabecera estándar de C)
- windef.h – varios macros y tipos
- winnt.h – varios macros y tipos (para Windows NT)
- basetsd.h – varios tipos
- guiddef.h – el tipo
GUID
- ctype.h – clasificación de caracteres (cabecera estándar de C)
- string.h – cadenas y búferes(cabecera estándar de C)
- winbase.h – kernel32.dll: servicios del núcleo del sistema operativo; advapi32.dll:servicios del núcleo(ej. función CreateProcessAsUser), control de acceso(ej. función AdjustTokenGroups).
- winerror.h – códigos de error de Windows.
- wingdi.h – GDI (Graphics Device Interface, en español, interfaz del dispositivo gráfico)
- winuser.h – user32.dll: servicios de usuario
- winnls.h – NLS (Native Language Support, en español, soporte de lenguaje nativo)
- wincon.h – servicios de consola de comandos
- winver.h – información de versión
- winreg.h – Registro de Windows
- winnetwk.h – WNet (Windows Networking: Red en Windows)
- winsvc.h – Servicios de Windows y SCM (Service Control Manager: Administrador de Control de Servicios)
- imm.h – IME (Input Method Editor)
Otras inclusiones
[editar]- cderr.h –
CommDlgExtendedError
códigos de error de funciones - commdlg.h – Common Dialog Boxes
- dde.h – DDE (Dynamic Data Exchange)
- ddeml.h – Administrador de la biblioteca de DDE
- dlgs.h – constantes para Common Dialog Boxes
- lzexpand.h – LZ (Lempel-Ziv) compresión/descompresión
- mmsystem.h – Multimedia en Windows
- nb30.h – NetBIOS
- rpc.h – RPC
- shellapi.h – Windows Shell API
- wincrypt.h – API de criptografía
- winperf.h – Monitoreo de rendimiento
- winresrc.h – usada en Recursos de Windows
- winsock.h – Winsock (Windows Sockets), version 1.1
- winspool.h – Print Spooler
- winbgim.h – Biblioteca gráfica estándar
OLE y COM
[editar]- ole2.h – OLE (Object Linking and Embedding)
- objbase.h – COM (Component Object Model)
- oleauto.h – OLE Automation
- olectlid.h – varias definiciones de GUID
Macros
[editar]Varias macros para el funcionamiento de windows.h.
Ejemplo en lenguaje C
[editar]Véase Windows Programming: Window Creation.
#include <windows.h>
#include <stdio.h>
LPSTR szClassName = "MiClase";
HINSTANCE hInstance;
LRESULT CALLBACK MyWndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow)
{
WNDCLASS wnd;
MSG msg;
HWND hwnd;
hInstance = hInst;
wnd.style = CS_HREDRAW | CS_VREDRAW;
wnd.lpfnWndProc = MyWndProc;
wnd.cbClsExtra = 0;
wnd.cbWndExtra = 0;
wnd.hInstance = hInstance;
wnd.hIcon = LoadIcon(NULL, IDI_APPLICATION); //icono por defecto
wnd.hCursor = LoadCursor(NULL, IDC_ARROW); //flecha de mouse por defecto
wnd.hbrBackground = (HBRUSH)(COLOR_BACKGROUND+1);
wnd.lpszMenuName = NULL; //sin menu
wnd.lpszClassName = szClassName;
if(!RegisterClass(&wnd)) //registrando WNDCLASS
{
printf("Este programa requiere Windows\n");
return 0;
}
hwnd = CreateWindow(szClassName,
"Titulo de la ventana",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL,
hInstance, NULL);
ShowWindow(hwnd, iCmdShow); //muestra la ventana en la pantalla
UpdateWindow(hwnd); //se actualiza la ventana
while(GetMessage(&msg, NULL, 0, 0)) //ciclo de mensajes
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK MyWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}