¿Cómo configurar la posición del formulario de inicialización en VC MFC?
1. En pocas palabras, puede agregar una oración a la función OnInitDialog():
RECT rect;
GetClientRect(amp; rect); p>
MoveWindow(1024-rect.right, 0, rect.right, rect.bottom);
Los primeros dos parámetros en MoveWindow arriba son las coordenadas de la esquina superior izquierda cuando el formulario es mostrado,
Supongamos que la resolución de su pantalla es 1024*768, por lo que su abscisa es 1024-rect.right;
2. p >
HWND?HMainwnd?=?NULL;?//Identificador de formulario
int?run();?//Función de bucle de mensajes
bool?InitWindowsApp(HINSTANCE? instanciaHandle,?int?show);?//Función de inicialización del formulario
LRESULT?CALLBACK?WndProc(HWND?wnd,?UINT?msg,?WPARAM?wp,?LPARAM?lp);// Formulario función de devolución de llamada de procesamiento
//función principal
int?WINAPI?WinMain(?HINSTANCE?hInstance,?HINSTANCE?hPrevInstance,?LPSTR?lpCmdLine,?int?nShowCmd?) p>
{
if(!InitWindowsApp(hInstance,?nShowCmd))//Determinar si la inicialización del formulario fue exitosa
{
return? 0;
}
run();?//Bucle para recibir mensajes después de que la inicialización sea exitosa
return?0;
}
bool?InitWindowsApp(HINSTANCE?stanceHandle,?int?show)
{
WNDCLASS?wc;?//Estructura de clases de formulario
wc.style?=?CS_HREDRAW?|?CS_VREDRAW;?//Estilo de formulario
wc.lpfnWndProc?=?WndProc;?//Función de procesamiento de formulario
wc. cbClsExtra?=?0;?//Si la clase del formulario está extendida
wc.cbWndExtra?=?0;?//Si la instancia del formulario está extendida
wc .hInstance? =?stanceHandle;?//Icono de formulario
wc.hIcon?=?LoadIcon(0,?IDI_APPLICATION);?//Icono de formulario
wc.hCursor ?=?LoadCursor( NULL,?IDC_ARROW);?//Estilo del mouse del formulario
wc.hbrBackground?=?(HBRUSH)GetStockObject(WHITE_BRUSH);?//Color de fondo del formulario
wc.lpszMenuName? =?NULL;?//Menú de formulario
wc.lpszClassName?=?"BaseWndClass";?//Nombre de clase de formulario
if( !RegisterClass(amp;wc))? //Determinar si el formulario se registró correctamente<
/p>
{
MessageBox(0,?"Error de registro",?0,?0);
return?false;
}
//Crear formulario
HMainwnd?=?CreateWindow("BaseWndClass",?//Nombre de la clase del formulario
"MyFrom",?// Título del formulario nombre
WS_OVERLAPPEDWINDOW,?//Estilo de formulario
CW_USEDEFAULT,
CW_USEDEFAULT,?//Coordenadas del formulario
CW_USEDEFAULT,
CW_USEDEFAULT,?//Coordenadas del formulario
NULL,?//El formulario principal del formulario
NULL,?//Submenú del formulario principal del formulario
stanceHandle,?//Control del formulario
NULL);?//?Si la función tiene éxito, el valor de retorno es el identificador de la nueva ventana: si la función falla, el valor de retorno es NULL
if(HMainwnd?==?0)//Determinar si la creación del formulario se realizó correctamente
{
MessageBox(0,?"Failed to create the form ",?0,?0);
return?false;
}
ShowWindow(HMainwnd,?SW_SHOW);?//Ventana de visualización
UpdateWindow(HMainwnd);?//Dibujar el formulario;
return?true;
}
LRESULT?CALLBACK?WndProc( HWND?wnd, ?UINT?msg, ?WPARAM?wp, ?LPARAM?lp)
{
switch(msg)//Determinar el tipo de mensaje
{
case?WM_LBUTTONDOWN:?//Clic izquierdo
MessageBox(0,?"Hello?World",?"myMbox",?MB_OK);
return?0;
case?WM_KEYDOWN:?//Mensaje de teclado
if(wp?==?VK_ESCAPE)?//Tecla ESC
DestroyWindow(HMainwnd);?//Destruir el formulario
return?0;
case?WM_DESTROY:
PostQuitMessage(0);?// Terminación mensaje
return?0;
}
return?DefWindowProc(wnd,?msg,?wp,?lp);?//Volver al mensaje predeterminado función
}
int?run()
{
MSG?msg?=?{0};?// Mensaje estructura
BOOL?bRet?=?1;?//Obtener mensaje
while(?(bRet?=?GetMessage(amp;msg,?0,?0,? 0 ))?=?0)//Bucle de mensajes
{
if(bRet?==?-1)//Determine si la recepción del mensaje falló
{
MessageBox(0,?"No se pudo aceptar el mensaje",?0,?0);
romper;
}
else
{
TraducirMessa
ge(amp;msg);?//Convertir mensaje en mensaje de caracteres
DispatchMessage(amp;msg);?//Enviar mensaje a ventana
}
}
retorno?(int)msg.wParam;
}