2021-09-15

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”项即可添加上述函数。

  1. 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);
上一篇:C# WPF 嵌入第三方exe


下一篇:2020—Prunging filter in filter