Red de conocimiento informático - Problemas con los teléfonos móviles - Conceptos básicos de programación de Windows: utilice WIN32API para escribir la función WinMain para completar el registro de la clase de ventana, la creación, visualización y actualización de la ventana y completar el ciclo de mensajes.

Conceptos básicos de programación de Windows: utilice WIN32API para escribir la función WinMain para completar el registro de la clase de ventana, la creación, visualización y actualización de la ventana y completar el ciclo de mensajes.

//////////////////////////////////////////// // /////////////////////

// 04Archivo FirstWindow.cpp

#include

#include "stdafx.h"

// Prototipo de función de función de ventana

LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

char szClassName[] = "MainWClass";

WNDCLASSEX wndclass;

// Rellena la estructura WNDCLASSEX con parámetros que describen la ventana principal

wndclass. cbSize = sizeof(wndclass); // El tamaño de la estructura

wndclass.style = CS_HREDRAW|CS_VREDRAW; // Especifica el rediseño si el tamaño cambia

wndclass. lpfnWndProc = MainWndProc; // Puntero de función de ventana

wndclass.cbClsExtra = 0; // Sin memoria de clase adicional

wndclass.cbWndExtra = 0; >

wndclass.hInstance = hInstance; // Identificador de instancia

wndclass.hIcon = ::LoadIcon(NULL,

IDI_APPLICATION // Usar icono predefinido

wndclass.hCursor = ::LoadCursor(NULL,

IDC_ARROW); // Usar cursor predefinido

wndclass.hbrBackground = (HBRUSH)

: :GetStockObject(WHITE_BRUSH); // Utilice un pincel de fondo blanco

wndclass.lpszMenuName = NULL; // No especifique un menú

wndclass.lpszClassName = szClassName; de la clase de ventana

wndclass.hIconSm = NULL; // Icono pequeño sin clase

// Registra esta clase de ventana

::RegisterClassEx(&wndclass);

// Crea la ventana principal

HWND hwnd = ::CreateWindowEx(

0, // dwExStyle, estilo extendido

szClassName , // nombreClaselp

e, nombre de clase

"¡Mi primera ventana!", // lpWindowName, título

WS_OVERLAPPEDWINDOW, // dwStyle, estilo de ventana

CW_USEDEFAULT, // X , coordenada X inicial

CW_USEDEFAULT, // Y, coordenada Y inicial

CW_USEDEFAULT, // nAncho, ancho

CW_USEDEFAULT, // nAlto, alto

p>

NULL, // hWndParent, identificador de ventana principal

NULL, // hMenu, identificador de menú

hInstance, // hlnstance, identificador de instancia de programa

NULL); // lpParam, datos del usuario

if(hwnd == NULL)

{

::MessageBox(NULL) , "¡Error al crear la ventana!", "error", MB_OK);

return -1;

}

// Muestra la ventana y actualiza la ventana área del cliente

::ShowWindow(hwnd, nCmdShow);

::UpdateWindow(hwnd);

// Obtener el mensaje del montón de mensajes

MSG msg;

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

{

// Convertir mensaje de teclado

: :TranslateMessage(&msg);

// Envía el mensaje a la función de ventana correspondiente

::DispatchMessage(&msg);

}

// El programa finaliza cuando GetMessage devuelve 0

return msg.wParam;

}

LRESULT CALLBACK MainWndProc( HWND hwnd, mensaje UINT, WPARAM wParam , LPARAM lParam)

{

char szText[] = "¡El programa de ventana más simple! ";

switch (mensaje)

{

case WM_PAINT: // Es necesario volver a pintar el área del cliente de la ventana

{

HDC hdc;

PAINTSTRUCT ps;

//Hacer válida el área del cliente no válida y obtener el identificador del entorno del dispositivo

hdc = : :BeginPaint (hwnd, &ps)

// Mostrar texto

::TextOut(hdc, 10, 10, szText, strlen(szText));

::EndPaint(hwnd, &ps);

retorno 0;

}

caso WM_CHAR:

{

char szChar[20];

sprintf(szChar,"char is %d",wParam);

MensajeB

buey(hwnd,szChar,"Windows",MB_OK);

descanso

}

caso WM_LBUTTONDOWN:

{

p>

MessageBox(hwnd,"ratón hecho clic","mensaje",0);

HDC hdc;

hdc=GetDC(hwnd);

TextOut(hdc,0,50,"Programa de Windows",strlen("Programa de Windows"));

ReleaseDC(hwnd,hdc); break;

}

caso WM_CLOSE:

if(IDYES==MessageBox(hwnd,"¿Salir del programa?","Windows",MB_YESNO))

{

DestroyWindow(hwnd);

}

case WM_DESTROY: // Destruyendo ventana

/ / Enviar a la cola de mensajes Entrega un mensaje WM_QUIT, solicitando a la función GetMessage que devuelva 0, finalizando el bucle de mensajes

::PostQuitMessage(0);

devuelve 0;

}

// Entregar los mensajes que no procesamos al sistema para su procesamiento predeterminado

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

}