2008-10-07 26 views
7

Tôi có một ứng dụng MFC mà tôi đã làm việc trong một vài tuần nay, tôi muốn tự thiết lập kích thước của khung chính khi nó được tải, ai đó có thể cho tôi một bàn tay với điều này, cụ thể nơi để đặt mã là tốt?Sizing một cửa sổ MFC

Cảm ơn!

Trả lời

8

Bạn cũng có thể thiết lập kích thước (với SetWindowPos()) từ bên trong CMainFrame::OnCreate(), hoặc trong CWinApp lớp -derived InitInstance. Tìm dòng có ghi số pMainFrame->ShowWindow() và gọi pMainFrame->SetWindowPos() trước dòng đó. Đó là nơi tôi luôn làm.

2

Tìm kích thước màn hình của bạn với ..

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

sử dụng những giá trị này để tính X và kích thước Y của cửa sổ của bạn sau đó ..

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

đâu main_x_sizemain_y_size là kích thước của bạn.

+1

SPI_GETWORKAREA chỉ nhận được kích thước của mnonitor chính. Đối với toàn bộ màn hình ảo, hãy sử dụng: int desktopW = GetSystemMetrics (SM_CXVIRTUALSCREEN); int desktopH = GetSystemMetrics (SM_CYVIRTUALSCREEN); –

2

Tôi nghĩ bạn đang tìm kiếm PreCreateWindow và ứng dụng của bạn không dựa trên hộp thoại.

Đó là một chức năng thành viên ảo của lớp CWnd và được gọi bằng khung ngay trước khi cửa sổ được tạo. Vì vậy, đó là một nơi thích hợp để đặt thay đổi của bạn.

Bạn nên viết một cái gì đó như thế này:

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

Tôi đã thử điều này và không có hiệu ứng hiển thị nào cả – masche

Các vấn đề liên quan