我在对话框中添加了一个框架(IDC_FRAME)用于包含显示GPS数据的各个控件,另外我在对话框中创建了一个MAPX对象用于显示电子地图,现在我想调整MAPX控件的大小,于是我添加了如下代码:
void CNavDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy); CRect rcFrame;
GetDlgItem(IDC_FRAME)->GetWindowRect(&rcFrame); //出错的地方
GetDlgItem(IDC_FRAME)->ScreenToClient(&rcFrame);
m_NavMap.MoveWindow(rcFrame.right,0,cx,cy,TRUE);
}
上面出错的地方指针为空,不知道为什么,请大家帮忙,不胜感激!
void CNavDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy); CRect rcFrame;
GetDlgItem(IDC_FRAME)->GetWindowRect(&rcFrame); //出错的地方
GetDlgItem(IDC_FRAME)->ScreenToClient(&rcFrame);
m_NavMap.MoveWindow(rcFrame.right,0,cx,cy,TRUE);
}
上面出错的地方指针为空,不知道为什么,请大家帮忙,不胜感激!
另外,
GetDlgItem(IDC_FRAME)->ScreenToClient(&rcFrame);
应该为ScreenToClient(&rcFrame);
if(GetDlgItem(IDC_FRAME))
{
GetDlgItem(IDC_FRAME)->GetWindowRect(&rcFrame); //出错的地方
GetDlgItem(IDC_FRAME)->ScreenToClient(&rcFrame);
m_NavMap.MoveWindow(rcFrame.right,0,cx,cy,TRUE);
}
另外,运行结果显示中框架对象和MAPX对象还是又点重叠,这使为什么呢?
而在OnInitDialog()的时候控件句柄已经创建出来了,所以可以在里面加上如下代码:
CRect tRct;
GetClientRect(&tRct);
OnSize(0, tRct.Width(), tRct.Height())