15,979
社区成员
发帖
与我相关
我的任务
分享
m_tab.InsertItem(0, _T("统计"));
m_trafficstaticDlg.Create(IDD_TRAFFICSTATIC_DIALOG, &m_tab); 其中m_tab为CTabCtrl变量,m_trafficstaticDlg是其中的子对话框,IDD_TRAFFICSTATIC_DIALOG是指对话框ID。现在只能实现tab控件随主窗口变化,代码如下:
void CTrafficControlServerDlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
CWnd *pWnd;
pWnd = GetDlgItem(IDC_TAB1); // Tab标签控件
ChangeDialogSize(nType,cx,cy,pWnd);
}
void CTrafficControlServerDlg::ChangeDialogSize(UINT nType,int cx, int cy,CWnd *pWnd)
{
if(pWnd && nType!=1)//判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建
{
CRect rect; //获取控件变化前大小
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); //设置控件大小
}
}