我在程序中重载了CStatic,来负责在指定地方动态创建控件,首先第一步是在重载的CStatic类中获取DataWatchDlg父窗体(也就是对话框)的坐标。可用GetClientRect(&rect)获取的结果是3687464-1-1242404-1943858504,而在DataWatchDlg类中获取自动生成的对话框坐标为0-0-822-525.为什么获得的结果都不一致?在重载的CStatic类中获取父窗体坐标要注意什么??在指定位置创建CStatic控件哪些方面要注意?
小生请大家回答,谢谢
小生请大家回答,谢谢
在DataWatchDlg类中获取的坐标是对于 DataWatchDlg 的坐标
要区分开来
CRect CDrawProgress::DrawStationInfoRect(int drawspan)
{
CRect rect;
CRect m_rect;
GetClientRect(&rect);
//ClientToScreen(&rect);
CString m_td;
m_td.Format("%d-%d-%d-%d",rect.top,rect.left,rect.right,rect.bottom);
AfxMessageBox(m_td);
m_rect.top=rect.top+20+(40+10)*drawspan;
m_rect.left=rect.left+20;
m_rect.right=rect.right-650;
m_rect.bottom=(rect.bottom/10)+(40+10)*drawspan;
return m_rect;
}
将DataWatchDlg产生的对话框指针传递给CDrawProgress中的DrawStationInfoRect函数该怎么传递?相关的函数名应该做什么样的修改?谢谢.
CRect CDrawProgress::DrawStationInfoRect(int drawspan)
{
CRect rect;
CRect m_rect;
GetClientRect(&rect);
//ClientToScreen(&rect);
CString m_td;
m_td.Format("%d-%d-%d-%d",rect.top,rect.left,rect.right,rect.bottom);
AfxMessageBox(m_td);
m_rect.top=rect.top+20+(40+10)*drawspan;
m_rect.left=rect.left+20;
m_rect.right=rect.right-650;
m_rect.bottom=(rect.bottom/10)+(40+10)*drawspan;
return m_rect;
}
将DataWatchDlg产生的对话框指针传递给CDrawProgress中的DrawStationInfoRect函数该怎么传递?相关的函数名应该做什么样的修改?谢谢.
// 获取父窗口指针
CDialog *pDlg = (CDialog*)GetParent();CRect rectParent;
// 获取父窗口客户区坐标
pDlg->GetClientRect(&rectParent);