error C2660: 'GetDlgItem' : function does not take 1 parameters 5

CWnd*pWnd=GetDlgItem(IDC_DRAW);这一句总是编译错误源程序如下:voidCMyclass::DrawCube(){CWnd*pWnd=GetD... CWnd *pWnd=GetDlgItem(IDC_DRAW);这一句总是编译错误
源程序如下:
void CMyclass::DrawCube()
{
CWnd *pWnd=GetDlgItem(IDC_DRAW);
pWnd->UpdateWindow();
CDC *pDC=pWnd->GetDC();
CRect rr;
pWnd->GetClientRect(rr);
ReadCube();

for(int i=1;i<4;i++)
{
WMoveTo(XP[i],YP[i],ZP[i],pDC,rr.right,rr.bottom);
WLineTo(XP[i+1],YP[i+1],ZP[i+1],pDC,rr.right,rr.bottom);
WMoveTo(XP[i+4],YP[i+4],ZP[i+4],pDC,rr.right,rr.bottom);
WLineTo(XP[i+5],YP[i+5],ZP[i+5],pDC,rr.right,rr.bottom);
}
WMoveTo(XP[4],YP[4],ZP[4],pDC,rr.right,rr.bottom);
WLineTo(XP[1],YP[1],ZP[1],pDC,rr.right,rr.bottom);
WMoveTo(XP[8],YP[8],ZP[8],pDC,rr.right,rr.bottom);
WLineTo(XP[5],YP[5],ZP[5],pDC,rr.right,rr.bottom);
for(i=1;i<=4;i++)
{
WMoveTo(XP[i],YP[i],ZP[i],pDC,rr.right,rr.bottom);
WLineTo(XP[i+4],YP[i+4],ZP[i+4],pDC,rr.right,rr.bottom);
}

pWnd->ReleaseDC(pDC);
}
展开
 我来答
xtfnpgy
2014-04-30 · TA获得超过1784个赞
知道大有可为答主
回答量:1989
采纳率:76%
帮助的人:1097万
展开全部
GetDlgItem的用法
基本用法(得到当前对话框中的控件):
CButton* btn = (CButton*)GetDlgItem(IDC_BUTTON_SEND);
btn->SetWindowTextW(_T("hello"));
如果想得到其他对话框中的控件,用GetDlgItem(hwnd,IDD);

CWnd::GetDlgItem(int nID)
这个是一个类成员函数,可使用CWnd* pWnd = GetDlgItem(ID_XXX);
而HWND GetDlgItem(
HWND hDlg, // handle of dialog box
int nIDDlgItem // identifier of control
);
是一个sdk的函数
两个的主要区别是用的地方不一样
一个参数的是在窗口中调用的函数,两个参数的是在平台SDK中调用的

你在对话框类里面调用GetDlgItem(IDC_BOARD_SIZE),就是调用的类成员函数CWnd::GetDlgItem
获得某个控件的句柄GetDlgItem(IDC_BOARD_SIZE)->m_hWnd就可以了

如果要用到第二种用法,要这样
::GetDlgItem(this-> m_hWnd,IDC_BOARD_SIZE);
效果一样的

那个IDC_BOARD_SIZE是你某个控件的id,

如果HWND GetDlgItem(
HWND hDlg, // handle of dialog box
int nIDDlgItem // identifier of control
);的话,
第一个参数是窗体的句柄,第二个参数是某个控件的ID,和IDC_BOARD_SIZE是一个意思
GetDlgItem(IDC_..),GetDlgItem(HWND hWnd, IDC_..)该如何使用,我在使用前者时老报错,提示应使用后者,但后者的hWnd不知如何获取。
GetDlgItem(IDC_..)是一个非静态方法,意思是你对话框内获取该控件指针,所以这里不需要获取对话框句柄,也就是说你如果在非对话框窗口里面调用这个方法就肯定会出错
GetDlgItem(HWND hWnd, IDC_..)是一个静态方法,它是一个让你指定从哪个对话框里获取控件指针
举个例子:你调用了上厕所这个函数,如果你在家里的话肯定是在自己家里上厕所,所以不需要知道在哪里上厕所(hwnd)
如果你在室外那么上厕所就一定要选一个地方(hwnd)。
如果说你上厕所的地方都不是一个房间,那么肯定会报错嘛,因为你在随地大小便,哈哈
所以你先搞清楚这两个函数的使用环境区别
再者,你问这个问题说明了你还没有搞清楚对话框是一个什么东西,建议学习一下深入浅出MFC

参考资料:
http://hi.baidu.com/wxing2008666/item/5f9d6ded9b44fafc2b09a44e
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式