如何控制窗口框架的最大最小尺寸?
要控制一个框架的的最大最小尺寸,你需要做两件事情.在CFrameWnd的继承类中
处理消息WM_GETMINMAXINFO,结构MINMAXINFO设置了整个窗口类的限制,因此记
住要考虑工具条,卷动条等等的大小.// 最大最小尺寸的象素点 - 示例
#define MINX 200
#define MINY 300
#define MAXX 300
#define MAXY 400void CMyFrameWnd::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
CRect rectWindow;
GetWindowRect(&rectWindow); CRect rectClient;
GetClientRect(&rectClient); // get offset of toolbars, scrollbars, etc.
int nWidthOffset = rectWindow.Width() - rectClient.Width();
int nHeightOffset = rectWindow.Height() - rectClient.Height(); lpMMI->ptMinTrackSize.x = MINX + nWidthOffset;
lpMMI->ptMinTrackSize.y = MINY + nHeightOffset;
lpMMI->ptMaxTrackSize.x = MAXX + nWidthOffset;
lpMMI->ptMaxTrackSize.y = MAXY + nHeightOffset;
}
第二步,在CFrameWnd的继承类的PreCreateWindow函数中去掉WS_MAXIMIZEBOX消
息,否则在最大化时你将得不到预料的结果.BOOL CMyFrameWnd::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style &= ~WS_MAXIMIZEBOX;
return CFrameWnd::PreCreateWindow(cs);
}
要控制一个框架的的最大最小尺寸,你需要做两件事情.在CFrameWnd的继承类中
处理消息WM_GETMINMAXINFO,结构MINMAXINFO设置了整个窗口类的限制,因此记
住要考虑工具条,卷动条等等的大小.// 最大最小尺寸的象素点 - 示例
#define MINX 200
#define MINY 300
#define MAXX 300
#define MAXY 400void CMyFrameWnd::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
CRect rectWindow;
GetWindowRect(&rectWindow); CRect rectClient;
GetClientRect(&rectClient); // get offset of toolbars, scrollbars, etc.
int nWidthOffset = rectWindow.Width() - rectClient.Width();
int nHeightOffset = rectWindow.Height() - rectClient.Height(); lpMMI->ptMinTrackSize.x = MINX + nWidthOffset;
lpMMI->ptMinTrackSize.y = MINY + nHeightOffset;
lpMMI->ptMaxTrackSize.x = MAXX + nWidthOffset;
lpMMI->ptMaxTrackSize.y = MAXY + nHeightOffset;
}
第二步,在CFrameWnd的继承类的PreCreateWindow函数中去掉WS_MAXIMIZEBOX消
息,否则在最大化时你将得不到预料的结果.BOOL CMyFrameWnd::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style &= ~WS_MAXIMIZEBOX;
return CFrameWnd::PreCreateWindow(cs);
}
解决方案 »
- 在《windows程序设计》这本书中的程序10-4所示的MENUDEMO程序
- CRgn怎么放大缩小呢
- 双击vc6.0工程文件打开时,始终在一个vc窗口,如何自动在新vc窗口中打开?
- CImage显示略缩图时有问题。
- 关于shell上下文菜单的问题
- 求windows程序设计 打印版
- 没有64位的msxml4.dll?
- 求救,子类化的问题?
- VS2010 怎么用 ADO 会失败哦?帮帮我,大哥大姐们。
- 请各位高手帮忙解决在应用程序退出时在析构函数中为什么吗不能创建出ADO的Connection实例?
- 如何将float类型的数据转换成char*类型???
- 怎么样动态设置控件的属性,比如是否可视,是否可等?
cs.style = WS_OVERLAPPED | WS_SYSMENU |S_BORDER|SWP_NOSIZE|WS_MINIMIZEBOX;
//SWP_NOSIZE表示不可改变窗口大小
//WS_MINIMIZEBOX表示有最小化按钮