vs里的IP control的使用方法?
答案:1 悬赏:80
解决时间 2021-02-18 19:09
- 提问者网友:末路
- 2021-02-17 22:16
vs里的IP control的使用方法?
最佳答案
- 二级知识专家网友:舍身薄凉客
- 2021-02-17 23:10
((CIPAddressCtrl*)GetDlgItem(IDC_SERVERIP))->GetAddress(field0, field1, field2, field3);
CString serverIp;
serverIp.Format(_T("%d.%d.%d.%d"), field0, field1, field2, field3);
------------------------------------------------------------------------------------------
GetDlgItem返回的是窗口类的指针,必须将GetDlgItem返回的类型从CWnd*强制转换成正确的控件类型指针。由于IDC_SERVERIP代表的是一个CIpAddressCtrl控件,因此GetDlgItem返回的CWnd*应转换成CIpAddressCtrl*指针,你将GetDlgItem返回的CWnd*指针赋给了CIPAddressCtrl变量,这是个严重错误,首先怎么赋值,都应该是要赋给指针变量,而不是控件实例变量,第二点是需要考虑C++的基类和派生类的关系,必要时需要做强制转换。GetDlgItem返回的是个基类指针,不能直接赋给派生类指针变量,需要进行强制转换,反之则不需要进行强制转换!(你没仔细看我给你的代码)
楼主C++知识需要边用边巩固,另外就是需要学会使用MSDN。初级问题,基础问题等发帖提问不是好办法!
CString serverIp;
serverIp.Format(_T("%d.%d.%d.%d"), field0, field1, field2, field3);
------------------------------------------------------------------------------------------
GetDlgItem返回的是窗口类的指针,必须将GetDlgItem返回的类型从CWnd*强制转换成正确的控件类型指针。由于IDC_SERVERIP代表的是一个CIpAddressCtrl控件,因此GetDlgItem返回的CWnd*应转换成CIpAddressCtrl*指针,你将GetDlgItem返回的CWnd*指针赋给了CIPAddressCtrl变量,这是个严重错误,首先怎么赋值,都应该是要赋给指针变量,而不是控件实例变量,第二点是需要考虑C++的基类和派生类的关系,必要时需要做强制转换。GetDlgItem返回的是个基类指针,不能直接赋给派生类指针变量,需要进行强制转换,反之则不需要进行强制转换!(你没仔细看我给你的代码)
楼主C++知识需要边用边巩固,另外就是需要学会使用MSDN。初级问题,基础问题等发帖提问不是好办法!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯