Red de conocimiento informático - Problemas con los teléfonos móviles - Programación del SDK de VC

Programación del SDK de VC

1. Una imagen es un recurso, por lo que debe definirse en un archivo de recursos. Cada recurso tiene un identificador que se puede usar al llamar al programa, o se puede usar el valor del identificador. El identificador se declara en el archivo de encabezado y VC generará automáticamente un archivo de encabezado Resource.h para almacenar la declaración del identificador;

2. Primero prepare dos imágenes. Esta carpeta contiene dos imágenes (Sol y Luna). ), cree una nueva carpeta llamada loadPic en su propia carpeta y copie estas dos imágenes en esta carpeta;

3 Inicie VC y cree un nuevo proyecto de aplicación Win32 llamado archivo loadPic, la ubicación es propia. carpeta, cree un nuevo archivo de encabezado y un archivo de programa fuente con el mismo nombre, ingrese el código del marco del programa,

En el archivo de encabezado, agregue también el código de declaración de recursos:

#define IDB_SUN 101

#define IDB_MOON 102

Agrega declaraciones de varias variables globales antes de la función principal WinMain del archivo del programa fuente, el código es:

HINSTANCE hInst ; //Guardar identificador de instancia

HWND hWndMain =NULL; //Identificador de ventana principal

HBITMAP hSun, hMoon; //Usado para dibujar

HDC hdc, hMemDc; // usado para dibujar

4. La imagen también debe mostrarse con la ventana, por lo que el código para cargar la imagen debe colocarse en el mensaje WM_PAINT.

La imagen El uso es similar a la salida de texto. Debe solicitar un dispositivo, luego cargar la imagen desde el disco duro a la memoria y copiarla desde la memoria a la ventana de la aplicación, por lo que consume más recursos;

5. Inicie el Bloc de notas. Haga clic en el comando guardar y guárdelo en la carpeta loadPic. El nombre del archivo es loadPic.rc y el tipo es "todos los archivos", es decir, cree un nuevo archivo de recursos e ingrese el código: <. /p>

#include "loadPic.h" //Utilice el identificador declarado en el archivo de encabezado

// Defina el recurso de mapa de bits a continuación

IDB_SUN BITMAP DISCARDABLE "sun. bmp"

//Identificador, mapa de bits, borrado de memoria, nombre de archivo de mapa de bits

IDB_MOON BITMAP DISCARDABLE "moon.bmp"

Guarde el archivo y luego cierre el Bloc de notas , haga clic en "Proyecto" en el "Menú" de la ventana VC, seleccione "Agregar proyecto" - "Archivos...", seleccione el archivo de recursos loadPic.rc y haga clic en "Aceptar" para agregar el archivo de recursos al proyecto;

5. Código para el proceso de procesamiento de mensajes Como sigue (las barras dobles verdes son comentarios. Si una línea es demasiado larga, se doblará automáticamente a la siguiente línea:

LRESULT APIENTRY MainWndProc().

HWND hWnd, mensaje UINT, WPARAM wParam, LPARAM lParam)

{

PAINTSTRUCT ps //Estructura de parámetros requerida para dibujar

cambiar(mensaje)

{

case WM_PAINT: //Redibujar ventana

//Cargar imagen

hSun =LoadBitmap(hInst , MAKEINTRESOURCE(101)); //"IDB_SUN";

hMoon=LoadBitmap(hInst,MAKE

INTRESOURCE(102)); //"IDB_MOON";

InvalidateRect(hWndMain, NULL, TRUE); //Actualizar área rectangular, identificador de ventana principal hWndMain

hdc=BeginPaint(hWndMain) , amp; ps); //Obtener el identificador de la descripción del dispositivo

hMemDc=CreateCompatibleDC(hdc); //Obtener el identificador de la tabla de descripción del dispositivo de memoria para que el mapa de bits se pueda guardar en la memoria

SelectObject(hMemDc, hSun); //Selecciona el objeto de mapa de bits y envíalo a la tabla de descripción del dispositivo de memoria;

BitBlt(hdc, 120, 8, 96, 136, hMemDc, 0, 0 , SRCCOPY); //Copia el mapa de bits de la memoria a la ventana

//Tamaño de la imagen: (x, y) 96×136

//Segunda imagen

SelectObject(hMemDc, hMoon); //Selecciona el objeto de mapa de bits y envíalo a la tabla de descripción del dispositivo de memoria;

BitBlt(hdc, 300, 80, 96, 136, hMemDc, 0, 0, SRCCOPY); // Copiar el mapa de bits de la memoria a la ventana

//Tamaño de la imagen: (x, y) 96×136

DeleteDC(hMemDc); tabla de descripción de memoria Bitmap

EndPaint(hWndMain, amp; ps); //Uso del dispositivo final

break

case WM_COMMAND:

case WM_DESTROY: //Salir

DeleteObject(hSun); //Eliminar el objeto para liberar recursos

DeleteObject(hMoon);

PostQuitMessage(0) ;

break;

predeterminado:

return(DefWindowProc(hWnd, message, wParam, lParam)); p>

devolver (0);

}