2008-10-07 23 views
7

Mam aplikację MFC, nad którą pracuję od kilku tygodni, chcę ręcznie ustawić wymiary głównej ramki po jej załadowaniu, czy ktoś może mi w tym pomóc, szczególnie gdzie umieścić kod również?Wymiarowanie okna MFC

Dzięki!

Odpowiedz

8

Można również ustawić rozmiar (z SetWindowPos()) od wewnątrz CMainFrame::OnCreate() lub w CWinApp pochodzące z A klasy InitInstance. Poszukaj linii o numerze pMainFrame->ShowWindow() i zadzwoń pod numer pMainFrame->SetWindowPos() przed tą linią. Tam zawsze to robię.

2

Znajdź swój rozmiar ekranu z ..

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

użyć tych wartości obliczyć wielkość X i Y okna swojego ówczesnego ..

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

Gdzie main_x_size i main_y_size są wasze rozmiary.

+1

SPI_GETWORKAREA pobiera tylko rozmiar głównego mnożnika. Dla całego wirtualnego pulpitu użyj: int desktopW = GetSystemMetrics (SM_CXVIRTUALSCREEN); int pulpitH = GetSystemMetrics (SM_CYVIRTUALSCREEN); –

2

Myślę, że szukasz PreCreateWindow i że Twoja aplikacja nie jest oparta na dialogu.

Jest to wirtualna funkcja członkowska klasy CWnd i jest wywoływana przez framework tuż przed utworzeniem okna. Jest to właściwe miejsce do umieszczenia zmian.

Należy napisać coś takiego:

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

Próbowałem tego i nie było żadnego widocznego efektu – masche

Powiązane problemy