【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函數

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