【error C2660: “GetDlgItem”: 函数不接受 1 个参数】

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函数

本人菜鸟一枚,如有不对的地方,还请指正!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章