Red de conocimiento informático - Problemas con los teléfonos móviles - Problemas de programación en lenguaje C de Windows

Problemas de programación en lenguaje C de Windows

Para ser honesto, también estoy buscando información en esta área.

Te mostraré un poco.

El programa C de Windows más simple.

#include

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)

{

MessageBox(NULL, "¡Hola, bienvenido al entorno de aprendizaje y experimento integrado de Turbo C para Windows!", "Mi primer programa de Windows", MB_OK);

devuelve 0;

}

El resultado de la ejecución del programa es:

Análisis del programa:

1. Windows.h es un archivo de encabezado requerido por cada programa de Windows.

2. La función WinMain es la entrada a todos los programas de Windows C, similar a la función principal en DOS C.

3. MessageBox es una función API de Win32 (API, interfaz de programación de aplicaciones). Su función es abrir un cuadro de diálogo para mostrar el contenido del mensaje. El primer parámetro de esta función se utiliza para especificar el identificador de la ventana principal, es decir, el identificador de la ventana donde se encuentra el cuadro de diálogo. El segundo parámetro se utiliza para mostrar el contenido del mensaje (puede modificarlo según lo que desee mostrar). El tercer parámetro es el título del cuadro de diálogo, como "Mi primer programa de Windows" en este ejemplo. El cuarto parámetro es el botón que se muestra en el cuadro de diálogo especificado. Pruébelo, cambie MB_OK a MB_OKCANCEL y ejecute el programa. ¿Qué pasará? Intente cambiarlo a MB_RETRYCANCEL

Intente cambiar un programa de DOS C que calcula la suma de 1+2+3+…+100 a un programa de Windows.

#include "stdio.h"

main()

{

int sum=0,i;

for(i=1;i<=100;i++)

{

suma=suma+i;

}

printf("La suma de los números naturales del 1 al 100 es: %d\n",sum);

}

Programa de referencia:

# incluir

#include

#include

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance ,PSTR szCmdLine, int iCmdShow)

{

int sum=0,i;

char str1[40]="1-100 número de libro natural La suma es: ",str2[10];

for(i=1;i<=100;i++)

{

suma=suma+ i ;

}

itoa(sum,str2,10); /*Convierta el resultado de la operación de la variable entera suma en la cadena str2 para una visualización conveniente*/

strcat(str1,str2); /*Conecta el valor de str1 (la suma de 1-100 números naturales es:) con str2 para una fácil visualización*/

MessageBox(NULL,str1," El segundo programa Win32",MB_OK);

devuelve 0;

}

Resultados de la ejecución:

2. Introducción a los programas de Windows

(1) Composición del programa Windows C:

1.Archivo fuente del programa C, con extensión .c o .cpp

2.Archivo de encabezado, El la extensión es .h

3. El archivo de recursos tiene la extensión .rc

(2) La estructura de composición del programa fuente

El programa Windows C tiene una estructura relativamente fija La estructura básica generalmente incluye la función de entrada WinMain y la función de ventana.

1. La función WinMain

es la entrada a todos los programas de Windows C, similar a la función principal de DOS C. Su función es completar una serie de definiciones y trabajos de inicialización. y generar un bucle de mensajes. El bucle de mensajes es el núcleo de todo el programa.

La función WinMain tiene tres componentes básicos: descripción de la función, inicialización y bucle de mensajes.

a. Descripción de la función WinMain:

int WINAPI WinMain(HINSTANCE hInstance. , HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)

Descripción del parámetro:

hInstance El identificador de instancia actual de la aplicación

hPrevInstance El identificador de instancia anterior, en 32 sistemas de bits Este parámetro siempre es NULL

Parámetros de línea de comando szCmdLine cuando el programa se está ejecutando

iCmdMostrar el modo de visualización cuando el programa se está ejecutando, como maximizar, minimizar, ocultar la visualización, etc. .

b. Inicialización

La inicialización incluye cuatro partes: definición de la clase de ventana, registro, creación de una instancia de ventana y visualización de la ventana.

Este es un formato fijo. Todos los programas de Windows son básicamente iguales. Sólo recuérdelo. Para obtener más detalles, consulte los comentarios sobre los ejemplos de programas a continuación.

2. Función de ventana

La función de ventana define la respuesta del programa Windows C a diferentes mensajes recibidos, lo que incluye el procesamiento por parte de la aplicación de varios mensajes que pueden recibirse. declaraciones de control de rama de procesamiento de mensajes. Por lo general, las funciones de ventana constan de una o más declaraciones de cambio. Cada declaración de caso corresponde a un mensaje. Cuando la aplicación recibe un mensaje, ejecutará el módulo de programa bajo la declaración de caso correspondiente para completar la función correspondiente.

Descripción de la función de ventana:

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

Descripción del parámetro:

identificador de ventana hwnd

mensaje representa el valor del mensaje que se está procesando

wParam es el parámetro adicional del mensaje, que es más información del mensaje

lParam es el parámetro adicional del mensaje. Es más información sobre el mensaje.

Uso general:

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

{

...

cambiar (mensaje)

{

caso constante 1:

...

caso constante 2:

...

...

caso WM_DESTROY:

PostQuitMessage (0) ; / /Insertar un mensaje de "salida" en la cola de mensajes

return 0 ;

}

return DefWindowProc (hwnd , message, wParam, lParam);// Ejecutar el procesamiento de mensajes predeterminado

}

El cuerpo principal de la función de ventana es la declaración de procesamiento de mensajes, que se compone de una serie de casos. declaraciones. Nuestros alumnos deben escribir los controladores correspondientes en la declaración del caso en función de los mensajes que la ventana puede recibir.

3. Un programa sencillo de Windows C: programa Hello World

#include

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM ); //Declaración de función de ventana

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow) //Descripción de función WinMain

{

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

HWND hwnd ; // Identificador de ventana

MSG msg //Estructura del mensaje

WNDCLASS wndclass; ; //Estructura de clases de ventana

//La siguiente es la definición de clase de ventana

wndclass.style = CS_HREDRAW | CS_VREDRAW;

wndclass.lpfnWndProc = WndProc

wndclass.cbClsExtra = 0;

wndclass.cbWndExtra = 0;

wndclass.hInstance = hInstance;

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; //Carga el icono para uso del programa

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) //Carga el puntero del mouse para uso del programa

wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;//Obtiene un objeto gráfico; en este ejemplo, utiliza el pincel para dibujar el fondo de la ventana

wndclass.lpszMenuName = NULL;

wndclass. lpszClassName = szAppName ;

//A continuación se muestra el registro de la clase de ventana

if (!RegisterClass (&wndclass))//Registra la clase de ventana para el programa. ventana

{

return 0 ;

}

//Crea una ventana basada en la clase de ventana

hwnd = CreateWindow (szAppName, TEXT ("Un programa Win32 simple"),

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT ,

NULL,

NULL,

hInstance,

NULL

)

//Ventana de visualización

ShowWindow (hwnd, iCmdShow)

UpdateWindow (hwnd) //Indica a la ventana que se actualice sola

//Bucle de mensajes

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

{

TranslateMessage (&msg) //Convierte algunos mensajes del teclado

DispatchMessage (&msg) //Envía el mensaje a la ventana procedimiento

}

return msg.wParam;

}

//Función de ventana

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

{

HDC hdc ;

PAINTSTRUCT ps ;

RECT rect ;

cambiar (mensaje)

{

case WM_PAINT:

hdc = BeginPaint (hwnd, &ps); dibujo

GetClientRect (hwnd, &rect); //Obtener el tamaño del área del cliente de la ventana

DrawText (hdc, TEXT ("¡Hola mundo!"), -1, &rect,

DT_SINGLELINE | DT_CENTER | DT_VCENTER); //Mostrar Hola Mundo, puedes modificar el contenido que deseas mostrar en el programa

EndPaint (hwnd, &ps); dibujo

return 0 ;

case WM_DESTROY:

PostQuitMessage (0) //Inserta un mensaje de "salida" en la cola de mensajes

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam);//Realizar el procesamiento de mensajes predeterminado

}

Consejos: este programa El código fuente se encuentra en "Ejemplos simples de programas introductorios"

Resumen

La estructura básica de todos los programas de Windows es igual o similar a la anterior. ejemplos (Nota: algunos programas son La esencia de sellar la clase de ventana y la ventana de la máquina de ventana en una función y llamarla es lo mismo. Recuerde un ejemplo y modifíquelo cuando escriba otros programas).

Nota: El programa anterior no tiene archivos de recursos. En "Ejemplo de programa de inicio simple", hay un código fuente del programa Bloc de notas con archivos de recursos y una interfaz de ejecución del programa.

Si aún no es suficiente, puedes ir a mi blog/hacker water mirror/blog