首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

VC++的一个有关问题,这里为什么会报错

2012-11-01 
VC++的一个问题,这里为什么会报错void CSettingDlg::OnPaint(){UpdateData()CPaintDC dc(this) // devic

VC++的一个问题,这里为什么会报错
void CSettingDlg::OnPaint()
{
UpdateData();
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
CPen pen(m_style,m_nLine_Width,RGB(255,0,0));
dc.SelectObject(&pen);
CRect rect;

GetDlgItem(IDC_SMPLE)->GetClientRect(&rect);
GetDlgItem(IDD_DLG_SETTING)->GetWindowRect(&rect);
GetDlgItem(IDC_SMPLE)->GetWindowRect(&rect);
ScreenToClient(&rect);
dc.MoveTo(rect.left,rect.top+50);
dc.LineTo (rect.right,rect.top+50);


}

IDD_DLG_SETTING 是对话框CSettingDlg 的ID,  
把GetDlgItem(IDD_DLG_SETTING)->GetWindowRect(&rect); 改成GetWindowRect(&rect);就不会有错了,难道我在里面“多此一举”的先取CSettingDlg的指针,再调用它的函数就不行吗?

[解决办法]
确实多此一举,此时CSettingDlg的指针不就是this指针吗? 在类的内部可以直接调用Method。
GetDlgItem :Retrieves a pointer to the specified control or child window in a dialog box or other window.

获取的是控件或者是对话框或者其他窗口中的子窗口。不能获取获取对话框自身的指针。
[解决办法]
翻译错了

获取的是对话框或者其他窗口中的 控件或子窗口。
[解决办法]
当然可以,如:
DWORD dwIP;
((CIPAddressCtrl *)GetDlgItem(IDC_IPADDRESS1))->GetAddress(dwIP);
==========
CEdit *edit=(CEdit*)GetDlgItem(IDC_EDIT1);
edit->Clear();
edit->SetWindowText("");

热点排行