2008-10-07 19 views
7

Birkaç haftadan beri üzerinde çalıştığım bir MFC uygulamasına sahibim, yüklendiğinde ana çerçevenin boyutlarını elle ayarlamak istiyorum, birisi bana bu konuda özellikle yardımcı olabilir. Kodu da nereye koyacağım?MFC Penceresinin Boyutlandırılması

Teşekkürler!

cevap

8

(SetWindowPos() ile) CMainFrame::OnCreate() içinden veya CWinApp -çıkarılmış sınıfta InitInstance içinde. pMainFrame->ShowWindow() yazan satırı arayın ve bu satırdan önce pMainFrame->SetWindowPos() numaralı telefonu arayın. Her zaman bunu yaptığım yer.

2

..

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

X ve ardından pencerenin Y boyutunu hesaplamak için bu değerleri kullanmak .. ile ekran boyutunu bulun main_x_size ve main_y_size senin boyutları

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

.

+1

SPI_GETWORKAREA yalnızca birincil mnonitor'un boyutunu alır. Tüm sanal masaüstü için şunu kullanın: int desktopW = GetSystemMetrics (SM_CXVIRTUALSCREEN); int desktopH = GetSystemMetrics (SM_CYVIRTUALSCREEN); –

2

PreCreateWindow'u aradığınızı ve uygulamanızın iletişim temelli olmadığını düşünüyorum.

Bu, CWnd sınıfının sanal üye işlevidir ve bir pencere oluşturulmadan hemen önce çerçeveye göre çağrılır. Yani değişikliklerinizi yerleştirmek için doğru bir yer.

Böyle bir şey yazmalıyım: Ayrıca boyutunu ayarlayabilirsiniz

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

Bunu denedim ve hiç görünür bir etki olmadı – masche

İlgili konular