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!
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!
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.
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_size
và main_y_size
là kích thước của bạn.
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);
}
Tôi đã thử điều này và không có hiệu ứng hiển thị nào cả – masche
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); –