最近利用VS2005编写了个工具,需要可以调节界面大小,研究了好些天,终于解决。整理如下
主要是利用onsize,重写onsize实现的
注:
1)若界面无法调整大小,则是因为界面属性少了个调整大小的属性,需进到*.rc中,添加上
2)如果有下拉框,需将下拉框中的属性Type是否为Drop List,否则改变界面大小时,会出现如下界面情况:
主界面跟子界面的关系:
//CRO2TestDlg.h中定义
CTabCtrl m_tabCtrl;
//在BEGIN_MESSAGE_MAP(CRO2TestDlg, CDialog)中添加上:
ON_WM_SIZE()//调整界面大小
//在CRO2TestDlg.cpp的DoDataExchange函数中输入:
DDX_Control(pDX, IDC_TAB1, m_tabCtrl);
//CRO2TestDlg.cpp的OnInitDialog函数中添加如下:
m_tabCtrl.InsertItem(0,"出厂设置");
m_tabCtrl.InsertItem(1,"主参配置");
m_tabCtrl.InsertItem(2,"高级设置");
m_tabCtrl.InsertItem(3,"报警设置");
m_tabCtrl.InsertItem(4,"消息设置");
m_tabCtrl.InsertItem(5,"监控设置");
m_tabCtrl.InsertItem(6,"行车记录仪");
//设置IDC_TAB1为父窗口
//m_para1 ~m_para7为7个新增界面,IDD_DIALOG1~IDD_DIALOG7为其对应的ID号
m_para1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB1));
m_para2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB1));
m_para3.Create(IDD_DIALOG3,GetDlgItem(IDC_TAB1));
m_para4.Create(IDD_DIALOG4,GetDlgItem(IDC_TAB1));
m_para5.Create(IDD_DIALOG5,GetDlgItem(IDC_TAB1));
m_para7.Create(IDD_DIALOG7,GetDlgItem(IDC_TAB1));
m_para6.Create(IDD_DIALOG6,GetDlgItem(IDC_TAB1));
//调整界面大小
CRect rect;
GetWindowRect(&rect);
oSize.x = rect.right - rect.left;
oSize.y = rect.bottom - rect.top;
//获得IDC_TAB1客户区大小
CRect rc;
m_tabCtrl.GetClientRect(&rc);
//调整子对话框在父窗口中的位置
rc.top += 20;
//rc.bottom -= 8;
rc.bottom += 4;