如何控制窗口框架的最大最小尺寸

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

要控制一个框架的的最大最小尺寸,你需要做两件事情.在CFrameWnd的继承类中

处理消息WM_GETMINMAXINFO,结构MINMAXINFO设置了整个窗口类的限制,因此记

住要考虑工具条,卷动条等等的大小.

// 最大最小尺寸的象素点 - 示例

#define MINX 200

#define MINY 300

#define MAXX 300

#define MAXY 400

void 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);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航