Red de conocimiento informático - Computadora portátil - ¿Cómo utilizar funciones API para generar un formulario en C?

¿Cómo utilizar funciones API para generar un formulario en C?

La función CreateWindowEx se puede utilizar para generar un formulario.

Función Función: Esta función crea una ventana en cascada, ventana emergente o subventana con un estilo expandido. Otras son iguales que la función CreateWindow.

Prototipo de función:

La función CreateWindowEx crea una ventana emergente automática en cascada (pop-up) o una ventana secundaria a través de un formato extendido. Además, la función de esta función es la misma que la de la función CreateWindow. Para obtener más información sobre la creación de ventanas y una descripción detallada de los parámetros de la función CreateWindowEx.

Ver CreateWindow

HWND CreateWindowEx(

DWOR DdwExStyle, //Estilo extendido de la ventana

LPCTSTR lpClassName, //Puntero al nombre de clase registrada

LPCTSTR lpWindowName,? //Puntero al nombre de la ventana

DWORD dwStyle,? //Estilo de la ventana

int x,? //Posición horizontal de la ventana

int y,? //Posición vertical de la ventana

int nWidth, //Ancho de la ventana

int nHeight, //Altura de la ventana

HWND hWndParent, //El identificador de la ventana principal

HMENU hMenu, //El identificador del menú o el identificador de la ventana secundaria

HINSTANCE hInstance, / /El identificador de la instancia de la aplicación

p>

LPVOID lpParam? //Apunta a los datos de creación de la ventana

);

Rutina: includelt; .hgt;

#includelt; stdio.hgt;

LRESULT?CALLBACK?WinDouProc(

HWND?hwnd,?//?handle?to?window

UINT?uMsg,?/ /?message?identifier

WPARAM?wParam,?//?first?message?parameter

LPARAM?lParam// ?segundo?mensaje?parámetro

);

clase?CWnd

{

público: CWnd() { m_hWnd?=? NULL; } BOOL?CreateEx( DWORD?dwExStyle,?/ /?extended?window?style LPCTSTR?lpClassName,?//?pointer?to?registered?class?name LPCTSTR?lpWindowName,?//?pointer?to?window ?nombre DWORD?dwStyle, //?ventana?estilo int ?x, //?posición?horizontal?de?ventana int?y, //?posición?vertical?de?ventana int?nAncho, //?ventana?ancho int?nHeight, ?//?window?height HWND? hWndParent,?//?handle?a?padre?o?propietario?ventana HMENU?hMenu,?//?handle?to?menú?o?ventana secundaria? identificador HANDLE?hInstance,?//?handle?to? aplicación?instancia LPVOID?lpParam//?pointer?to?window-creation?data ); BOOL?ShowWindow(?int?nCmdShow?);

público

c: HWND?m_hWnd;

};

BOOL?CWnd::CreateEx(DWORD?dwExStyle,?//?extended?window?style LPCTSTR?lpClassName,?//? puntero?a?nombre?de?clase?registrada?LPCTSTR?lpWindowName, ?//?puntero?a?nombre?de?ventana?DWORD?dwStyle, //?ventana?estilo int?x, //?posición?horizontal?de?ventana int? y, //?posición?vertical?de?ventana int?nAncho, //?ancho de ventana?int?nAltura,?//?altura de ventana?HWND?hWndParent,?//?mango?a?padre?o?propietario ?ventana HMENU?hMenu,?//?handle?to?menu?o?identificador de ventana secundaria?HANDLE?hInstance,?//?handle?to?application?instance LPVOID?lpParam//?pointer?to?window- Creation?data

)

{ m_hWnd?=?::CreateWindowEx?(dwExStyle, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, (HINSTANCE )hInstance, lpParam); if(m_hWnd?!=?NULL) return?TRUE; si no, return?FALSE;

}

BOOL?CWnd::ShowWindow(int?nCmdShow)

{ return?::ShowWindow(m_hWnd, nCmdShow);

}

BOOL?CWnd::UpdateWindow()

{ return?::UpdateWindow(m_hWnd);

}

int?WINAPI?WinMain( HINSTANCE?hInstance,?//?handle?to?current?instance HINSTANCE?hPrevInstance,? //?handle?to?previous?instance LPSTR?lpCmdLine,?//?pointer?to?command?line int?nCmdShow?//?show?state?of?window

)

{

WNDCLASS?wndclass;?//Diseñe primero la clase de ventana

wndclass.cbClsExtra?=?0;

wndclass.cbWndExtra? = ?0;

wndclass.hbrBackground?=?(HBRUSH)GetStockObject(DKGRAY_BRUSH);

wndclass.hCurs

o?=?LoadCursor(NULL, IDC_HELP);

wndclass.hIcon?=?LoadIcon(NULL, IDI_WARNING);

wndclass.hInstance?=?hInstance;

wndclass.lpfnWndProc?=?WinDouProc;

wndclass.lpszClassName?=?"Magic_Maggie";

wndclass.lpszMenuName?=?0;

wndclass.style?=?CS_VREDRAW?|?CS_HREDRAW; //Para eliminar una característica de una determinada variable o varias variables, puede usar la inversión (~) y luego realizar el AND (amp;) //Por ejemplo: eliminar CS_NOCLOSE de estilo, puede diseñaramp;~CS_NOCLOSE;

RegisterClass(amp;wndclass);?/// Tenga cuidado de crear antes de registrarse

CWnd?wnd; wnd.CreateEx(NULL, "Magic_Maggie", "DouDou", WS_OVERLAPPEDWINDOW, 0, 0, 800, 600, NULL, NULL, hInstance, NULL); wnd.ShowWindow(SW_SHOWNORMAL); wnd.UpdateWindow(); (GetMessage(amp;msg, NULL, 0, 0))

{

TranslateMessage(amp;msg);

DispatchMessage(amp;msg); //Activar WinDouProc }

return?0;

}

LRESULT?CALLBACK?WinDouProc(

HWND?hwnd,?/ /?identificador de mensaje?

WPARAM?wParam,?//?primer?mensaje?parámetro

LPARAM?lParam// ?segundo?mensaje ?parametro

)

{ switch(uMsg) { case?WM_LBUTTONDOWN: MessageBox(hwnd, "Presionaste el botón izquierdo del mouse", "Programa de Doudou", MB_OK ); HDC?hdc; hdc?=?GetDC(hwnd); //La?función?GetDC?recupera?un?identificador?a?un?dispositivo?de?contexto?para?el?área?del?cliente?de?a? "ventana" especificada o para toda la pantalla. Puede usar el identificador devuelto en funciones GDI posteriores para dibujar en el contexto del dispositivo. hdc, 0, 0, "Gracias por su apoyo al programa Doudou", strlen("Gracias por su apoyo al programa Doudou"));

nd, hdc); break;

case?WM_CHAR: char?szChar[20]; sprintf(szChar, "Char?is?d", wParam(hwnd, szChar, "programa de Doudou"); , MB_OK);

case?WM_PAINT: PAINTSTRUCT?ps; HDC?hDc; hDc?=?BeginPaint(hwnd, amp;ps); redraw.", strlen("Esto es un redibujo")); EndPaint(hwnd, amp; ps); break;

case?WM_CLOSE: //Este caso es el mismo que el de destrucción a continuación Don' No cometa un error en este caso, de lo contrario la ventana no aparecerá, pero if(IDYES?==?MessageBox(hwnd, "¿Realmente desea salir?", "El programa de Doudou", MB_YESNO)) {

DestroyWindow(hwnd); } romper;

caso?WM_DESTROY: PostQuitMessage(0); ////////////////// //// ////////////////////? break;

predeterminado: return?DefWindowProc(hwnd, uMsg, wParam, lParam);?/ /?Don No olvides regresar } regresar?0;

}