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"; p>
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);
}