2008-10-07 7 views
7

Tengo una aplicación MFC en la que he estado trabajando durante unas semanas, quiero configurar manualmente las dimensiones del cuadro principal cuando está cargado, ¿alguien puede ayudarme con esto, específicamente? dónde poner el código también?Dimensionando una Ventana MFC

Gracias!

Respuesta

8

También puede configurar el tamaño (con SetWindowPos()) desde dentro CMainFrame::OnCreate(), o en el CWinApp clase derivada de InitInstance. Busque la línea que dice pMainFrame->ShowWindow(), y llame al pMainFrame->SetWindowPos() antes de esa línea. Ahí es donde siempre lo hago.

2

Encuentre su tamaño de pantalla con ..

CRect rect; 
SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0); 
screen_x_size=rect.Width(); 
screen_y_size=rect.Height(); 

usar estos valores para calcular el tamaño de X e Y de la ventana entonces ..

::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,main_x_size,main_y_size,SWP_NOZORDER); 

Dónde main_x_size y main_y_size son sus tamaños.

+1

SPI_GETWORKAREA solo obtiene el tamaño del mnonitor primario. Para todo el escritorio virtual, use esto: int desktopW = GetSystemMetrics (SM_CXVIRTUALSCREEN); int desktopH = GetSystemMetrics (SM_CYVIRTUALSCREEN); –

2

Creo que está buscando PreCreateWindow y que su aplicación no está basada en cuadros de diálogo.

Es una función de miembro virtual de la clase CWnd y se llama por marco justo antes de que se cree una ventana. Entonces, es un lugar correcto para colocar sus cambios.

debe escribir algo como esto:

BOOL CMyWindow::PreCreateWindow(CREATESTRUCT& cs) 
{ 
    cs.cy = 640; // width 
    cs.cx = 480; // height 
    cs.y = 0; // top position 
    cs.x = 0; // left position 
    // don't forget to call base class version, suppose you derived you window from CWnd 
    return CWnd::PreCreateWindow(cs); 
}
+0

Intenté esto y no hubo ningún efecto visible en absoluto – masche