1. Cuando uso VC 6.0 para crear una ventana, mis pasos son los siguientes (siguiendo el tutorial de Sun Xin).
1. Cree una nueva aplicación de proyecto win32.
#include lt;windows.hgt;
#pragma comment(lib,"user32.lib")
#pragma comment(lib,"Gdi32. lib")
LRESULT CALLBACK WndProc(
HWND hwnd
, mensaje UINT
, WPARAM wParam
, LPARAM lParam
);
HWND hWnd; // Identificador de ventana, definido como global
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
MSG msg;
WNDCLASS wnd;
wnd.style = 0;
wnd.cbClsExtra = 0; //debe ser 0
wnd.cbWndExtra = 0; //Ambos son 0
wnd.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //Color de relleno de fondo
wnd.hCursor = LoadCursor(NULL, IDC_ARROW); //Cursor, use el parámetro de cursor predeterminado, uno es NULL
wnd.hIcon = LoadIcon(NULL, IDI_EXCLAMATION); //Icon
wnd.hInstance = hInstance; //Handle< / p>
wnd.lpfnWndProc = WndProc; //Procesamiento de mensajes
wnd.lpszClassName = "XP"; // Nombre de clase
wnd.lpszMenuName = NULL; Nombre del menú
RegisterClass(amp; wnd); //Registro
hWnd = CreateWindow("XP", "Ventana", WS_OVERLAPPEDWINDOW, 100, 100, 500, 500, NULL, NULL, hInstance, NULL); //Crear ventana, consulte MSDN
ShowWindow(hWnd, SW_SHOWNORMAL); //Mostrar
UpdateWindow(hWnd); p>
while(GetMessage(amp; msg, NULL, 0, 0))
{//Bucle de mensajes
TranslateMessage(amp; msg);
Mensaje de envío(amp;msg);
}<
/p>
devuelve 0;
}
/*LRESULT CALLBACK WindowProc(HWND hwhd, uMsg, WPARAM wParam, LPARAM IParam)
Respuesta del mensaje Definición de función
hwnd: identificador que apunta a la ventana.
uMsg: Especifica el tipo de mensaje.
wParam: mensaje
IParam: mensaje */
LRESULT CALLBACK WndProc(
HWND hwnd
, Mensaje UINT
, WPARAM wParam
, LPARAM lParam
)
{
switch(mensaje)
{
case WM_CLOSE: //Cerrar
if(MessageBox(hWnd, "Si salir", "Preguntar", MB_YESNO)==IDYES)/ / Usa el cuadro de mensaje global
PostQuitMessage(0); //Agrega WM_QUIT a la cola de mensajes
break;
case WM_KEYDOWN: //El teclado es presionado tipo de tipo de mensaje, MFC será más completo
switch(wParam)
{
case VK_UP:
MessageBox( hWnd, "Arriba", "presionado", MB_OK);
case VK_RBUTTON:
MessageBox(hWnd, "botón derecho del mouse", "presionado", MB_OK); >
romper;
caso VK_MENU:
MessageBox(hWnd, "Alt", "Presionado", MB_OK
romper; >
caso VK_END:
MessageBox(hWnd, "END", "Presionado", MB_OK
break
caso VK_LEFT);
MessageBox(hWnd, "izquierda", "presionado", MB_OK);
break
case VK_RIGHT:
MessageBox( hWnd, "derecha", "presionar", MB_OK);
romper
case VK_DOWN:
MessageBox(hWnd, "abajo", "presionar" , MB_OK);
romper
caso VK_CONTROL:
MessageBox(hWnd, "Ctrl", "presionar", MB_OK); p> romper;
caso VK_ESCAPE:
MessageBox(hWnd, "Esc", "Presionado", MB_OK
// PostQuitMessage(0);
descanso;
caso VK_SHIFT:
MessageBox(hWnd, "SHIFT", "Presionado", MB_OK);
descanso
predeterminado:
}
predeterminado:
return DefWindowProc(hwnd, message, wParam, lParam //Procesamiento predeterminado
}
return(0);
<); p>}Sin definición externa...
MFC es un archivo de aplicación win32 estándar
DLL es una biblioteca de enlaces dinámicos,
Archivo de conexión
Puedes usar clases para crear ventanas encapsuladas
Lo mismo ocurre con MFC
Puedes agregar el archivo de encabezado afxwin.h al mfc biblioteca La idea mfc semi-orientada a objetos de C llamada
también encapsula datos básicos.
Si no tiene una base de C y no está familiarizado con ella, es posible que no pueda hacer progreso fluido
Para algunas funciones que no pueden pasar parámetros, consulte MSDN