5581|9

93

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

怎样用VC++改变对话框和里面控件的大小? [复制链接]

怎样用VC++动态改变对话框和里面控件的大小?
本人菜鸟,请尽量详细点。

最新回复

msdn查下就好了。  详情 回复 发表于 2008-11-29 16:03
点赞 关注

回复
举报

63

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
用MoveWindow(),
具体用法看MSDN吧。
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
BOOL MoveWindow( HWND hWnd, int nX, int nY, int nWidth, int nHeight,
BOOL bRepaint);

 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
查帮助吧,这问题应该简单的
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
UPDATEWINDOW也可以,新手的话也建议先看MSDN噢
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

6
 
MoveWindows ,就可以了,非常简单
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 
给你一个可参考的实例吧
在oninitial中添加以下代码实现最大化
        //fullScreen
        GetClientRect(&m_rect);       
        CRect  m_FullScreenRect;   
        CRect  WindowRect;   
        GetWindowRect(&WindowRect);   
        CRect  ClientRect;  
        RepositionBars(0,0xffff,AFX_IDW_PANE_FIRST,reposQuery,&ClientRect);  
        ClientToScreen(&ClientRect);   
        int  nFullWidth=GetSystemMetrics(SM_CXSCREEN);  
        int  nFullHeight=GetSystemMetrics(SM_CYSCREEN);  
        m_FullScreenRect.left  =  WindowRect.left-ClientRect.left;  
        m_FullScreenRect.top=WindowRect.top-ClientRect.top;  
        m_FullScreenRect.right=WindowRect.right-ClientRect.right+nFullWidth;  
        m_FullScreenRect.bottom=WindowRect.bottom-ClientRect.bottom+nFullHeight;  
        this->SetWindowPos(&wndBottom,m_FullScreenRect.left,m_FullScreenRect.top,m_FullScreenRect.Width(),m_FullScreenRect.Height(),SWP_SHOWWINDOW);

如何在OnSize中添加以下代码根据窗体大小的变化调整控件大小
        CWnd *pWnd;
        LOGFONT logFont;
        CFont *pFont;
        CString cClassName;
        CRect rect;//获取控件变化前大小
        pWnd=GetWindow(GW_CHILD);//获取控件句柄
        while(pWnd)
        {
                pWnd->GetWindowRect(&rect);
                ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
                rect.left=rect.left*cx/m_rect.Width();///调整控件大小
                rect.right=rect.right*cx/m_rect.Width();
                rect.top=rect.top*cy/m_rect.Height();
                rect.bottom=rect.bottom*cy/m_rect.Height();
                pWnd->MoveWindow(rect);//设置控件大小
                //adjust font size
                static CFont font1;
                GetClassName(pWnd->GetSafeHwnd(),cClassName.GetBuffer(255),255);
                /*MessageBox(NULL,cClassName,MB_OK);*/
                if(cClassName.Compare(_T("static")) !=0)//
                {
                        pFont=pWnd->GetFont();
                        pFont->GetLogFont(&logFont);
                        logFont.lfWidth=logFont.lfWidth*(int)(cx/m_rect.Width());
                        logFont.lfHeight=logFont.lfHeight*(int)(cy/m_rect.Height());
                        font1.CreateFontIndirect(&logFont);
                        pWnd->SetFont(&font1);
                        font1.Detach();
                }               
                pWnd=pWnd->GetWindow(GW_HWNDNEXT);
        }
        GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 
1.MoveWindow

2.SetWindowPos
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

9
 
MoveWindow()

然后根据你的设置移动相应窗口即可
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

10
 
msdn查下就好了。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表