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!
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!
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ę.
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.
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);
}
Próbowałem tego i nie było żadnego widocznego efektu – masche
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); –