MFC编程时,遇到如下错误:
error C2660: “GetDlgItem”: 函数不接受 1 个参数
(1)、CWindow::GetDlgItem
函数原型:HWND GetDlgItem( int nID)const;
参 数: nID代表接收消息的控件的标识;
返 回 值:标识所标记的控制窗口句柄;
(2)、CWnd::GetDlgItem
函数原型1:CWnd* pWnd = GetDlgItem(ID_XXX);(这个是一个类成员)
函数原型2:void CWnd::GetDlgItem( int nID, HWND *phWnd) const;
参 数: nID代表接收消息的控件的标识,参数phWnd代表子类窗口的指针;
返 回 值:
标识所标记的控件(或子类窗口)的指针;
(3)、window sdk
函数原型:HWND GetDlgItem(HWND hDlg, int nID);
参 数: nID代表接收消息的控件的标识,hDlg代表对话框的
返 回 值:如果函数调用成功则返回值为给定控件的窗口句柄。如果函数调用失败,则返回值为NULL,表示为一个无效的对话框句柄或一个不存在的控件。若想获得更多错误信息,请调用GetLastError函数。
可以看出他们是同名函数,很容易把他们搞混。而他们他们在使用时,都有自己的使用范围,如,一个参数的是在窗口中调用的函数,两个参数的是在平台SDK中调用的。
我本来想用的一个参数的,可是不对,查看许多资料发现不对:
解决办法有两个:
(1)、改变你调用此函数的环境或者调用的地方;
(2)、调用当前环境下对应的GetDlgItem函数;
例如:我遇到此问题时,是参看点击打开链接的博客做一个图片查看器。所以我使用的是第(1)中方法。
开始调用这个函数情况如下:先是在DrawPct函数里面调用GetDlgItem函数,然后再控件的事件函数CMFC_ONEDlg::OnBnClickedButton1()调用DrawPct函数;修改为:直接在控件的事件函数CMFC_ONEDlg::OnBnClickedButton1()调用GetDlgItem函数;
本人菜鸟一枚,如有不对的地方,还请指正!