VC 中任意扩展对话框的方法(主要是针对向左或向上)
2012-06-01 08:46
253 查看
VC 中任意扩展对话框的方法(主要是针对向左或向上)
大家都知道,如果对话框扩展向右或者向下扩展收缩时,只需要简单的设置下对话框的相应尺寸即可,但是在向左或向上扩展收缩时,除了设置对话框的相应尺寸外,还需要把相应的子控件移动到相应的位置
其中nResourceId为分隔条的,根据rcSmall的设置调整是向左还是向上,在这里只做了向左的处理
大家都知道,如果对话框扩展向右或者向下扩展收缩时,只需要简单的设置下对话框的相应尺寸即可,但是在向左或向上扩展收缩时,除了设置对话框的相应尺寸外,还需要把相应的子控件移动到相应的位置
其中nResourceId为分隔条的,根据rcSmall的设置调整是向左还是向上,在这里只做了向左的处理
void CTestExtendDlg::ExpandDialog (int nResourceID, BOOL bExpand) { // 对话框被nResourceID分成上下两部分,如果bExpand的值为TRUE // 对话框被完整显示,否则对话框显示半部分。 static CRect rcLarge; static CRect rcSmall; if (rcLarge.IsRectNull()) { CRect rcLandmark; CWnd* pWndLandmark = GetDlgItem (nResourceID); ASSERT(pWndLandmark); GetWindowRect (rcLarge); pWndLandmark->GetWindowRect (rcLandmark); rcSmall = rcLarge; rcSmall.left = rcLandmark.right; } MoveAndVisibleChildren(rcLarge,rcSmall, bExpand); if (bExpand) { //扩展对话框到最大尺寸 SetWindowPos(NULL, 0, 0, rcLarge.Width(), rcLarge.Height(), SWP_NOMOVE | SWP_NOZORDER); } else { //只显示对话框的半部分 SetWindowPos(NULL, 0, 0, rcSmall.Width(), rcSmall.Height(), SWP_NOMOVE | SWP_NOZORDER); } } void CTestExtendDlg::MoveAndVisibleChildren(const CRect rectLagre,const CRect rectSmall, BOOL bExpand) { //去掉没有显示的对话框的控件的功能和快捷键。 //得到第一个窗口 CWnd *pWndCtl = GetWindow (GW_CHILD); CRect rcControl; CRect rcShow; //得到对话框的完整矩形框 GetClientRect(rcShow); ClientToScreen(rcShow); int nCXEDGE = GetSystemMetrics(SM_CXEDGE); while (pWndCtl != NULL) { //得到当前显示的对话框的矩形尺寸 pWndCtl->GetWindowRect(rcControl); if ( bExpand ) { pWndCtl->MoveWindow(rcControl.left-rcShow.left+rectLagre.Width()-rectSmall.Width(), rcControl.top - rcShow.top, rcControl.Width(), rcControl.Height()); } else { pWndCtl->MoveWindow(rcControl.left-rcShow.left-rectLagre.Width()+rectSmall.Width(), rcControl.top - rcShow.top, rcControl.Width(), rcControl.Height()); } pWndCtl->GetWindowRect(rcControl); //得到第二个矩形框 pWndCtl = pWndCtl->GetWindow (GW_HWNDNEXT); } }
相关文章推荐
- VC++对话框的任意扩展
- VC++对话框的任意扩展
- prompt是 javascript 语言中的一个方法,主要用处是:显示提示对话框。
- VC 添加对话框右键菜单方法
- vc 关闭对话框几种方法 .
- java利用反射扩展任意数组的方法
- VC++中给对话框设置背景图片的方法
- 第二节、组件构建方法(主要是针对公用组件)
- 在VC的两个对话框类中传递参数的三种方法
- 扩展Jquery的resize方法(原生的resize只针对window,因项目需要扩展了此方法,目前只在DIV上使用过,后续如果修改代码会对此代码进行更新)
- VC实现对话框窗口任意分割
- VC++对话框中添加状态栏的方法
- VC++无标题窗口以及控件拖动的方法,MFC中的对话框怎么拖动不了
- 写一个针对IQueryable<T>的扩展方法支持动态排序
- VC从文件全路径中获取文件名和扩展名方法(CString)
- C#扩展方法将任意集合转成DataSet
- VC++对话框中添加状态栏的方法
- VC中无标题栏的对话框界面 ,如何来拖动程序的解决方法
- VC++修改对话框颜色方法
- 我知道的一点Exadata测试常用的方法(这里主要讨论针对DW的场景)