MFC设置窗口大小、位置,使用消息函数
几种方法还是不错的
//第一种
SetWindowPos(NULL,0,0,200,300,SWP_NOMOVE);
// 表示不考虑(0,0),仅仅将大小改为200x300,位置不变
// SetWindowPos(NULL,0,0,200,300,SWP_NOMOVE);
// 表示不考虑200X300,只是把位置挪到(0,0).大小不变
// 如果想同时改变,最后可用SWP_NOZORDER等
// 参数中还有SWP_SHOWWINDOW 显示窗口 对应的SWP_HIDEWINDOW
MFC设置窗口大小、位置
//第二种:
//在OnShowWindow函数中完成窗口居中。
#//共三种方法:
CenterWindow( ); //Relative to it’s parent
CenterWindow(CWnd:: GetDesktopWindow( )); // Relative to Screen
AfxGetMainWnd( ) -> Center Window( ); //Relative to Application’s MainWindow
//第三种:
1.一般MFC得到的窗口位置随机,窗口大小可以随意改变,固我们可以再增加语句进行设置,仍然在框架类中添加CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)函数,方法是点到类视图,在CMainFrame类上点击右键,选择属性,在属性页点击工具栏的“消息”图标,在列表中找出“VM_GETMINMAXINFO”项即可添加上述函数。
-
CMainFrame::OnGetMinMaxInfo(MINMAXINFO*lpMMI)函数中添加一下代码:
voidCMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
// TODO: Add your message handler code here and/or call default
lpMMI->ptMaxTrackSize.x = 820; //设置窗口最大宽度
lpMMI->ptMaxTrackSize.y = 720; //设置窗口最大高度
lpMMI->ptMinTrackSize.x = 620; //设置窗口最小宽度
lpMMI->ptMinTrackSize.y = 520; //设置窗口最小高度
CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
说明:(1)上述代码的意思是:在运行程序后弹出MFC窗口,它的宽度、高度可调,范围是,宽度从620到820,高度是从520到720。若当宽度或高度的最大、最小值相等, 则意味着尺寸不可调。
(2)OnGetMinMaxInfo中的参数意义:
lpMMI->ptMaxSize.x= 800; // 设置窗口最大化时的宽度
lpMMI->ptMaxSize.y =600; // 设置窗口最大化时的高度
lpMMI->ptMaxPosition.x =100; // 设置窗口最大化时x坐标
lpMMI->ptMaxPosition.y =100; // 设置窗口最大化时y坐标
lpMMI->ptMinTrackSize.x =400; // 设置窗口最小宽度
lpMMI->ptMinTrackSize.y =400; // 设置窗口最小高度
lpMMI->ptMaxTrackSize.x =600; // 设置窗口最大宽度
lpMMI->ptMaxTrackSize.y =500; // 设置窗口最大高度
(3)获取屏幕大小的函数:
不含任务栏:
int cx = GetSystemMetrics(SM_CXFULLSCREEN);
int cy = GetSystemMetrics(SM_CYFULLSCREEN);
包含任务栏:
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN);