当前位置: 代码迷 >> VC >> “GetDlgItem”: 函数不接受 一 个参数-类名加了在了成员函数前呀,还是不行额~
  详细解决方案

“GetDlgItem”: 函数不接受 一 个参数-类名加了在了成员函数前呀,还是不行额~

热度:479   发布时间:2016-05-05 00:04:32.0
“GetDlgItem”: 函数不接受 1 个参数-类名加了在了成员函数前呀,还是不行额~~~
报错如下:
1>c:\documents and settings\administrator\桌面\36272129netdiagtool\netdiagtool\pobowindow.cpp(1147): error C2660: “GetDlgItem”: 函数不接受 1 个参数
1>c:\documents and settings\administrator\桌面\36272129netdiagtool\netdiagtool\pobowindow.cpp(1147): error C2227: “->SetWindowTextA”的左边必须指向类/结构/联合/泛型类型
1>c:\documents and settings\administrator\桌面\36272129netdiagtool\netdiagtool\pobowindow.cpp(1148): error C3861: “Invalidate”: 找不到标识符
1>c:\documents and settings\administrator\桌面\36272129netdiagtool\netdiagtool\pobowindow.cpp(1150): fatal error C1075: 与左侧的 大括号“{”(位于“c:\documents and settings\administrator\桌面\36272129netdiagtool\netdiagtool\pobowindow.cpp(1143)”)匹配之前遇到文件结束
1>  Main.cpp
1>  DiagManager.cpp
我上网查了,要加“C**::”,可是我加了之后,还是报这个错误
偶滴部分代码如下:
void PoboWindow::LocalIPShow(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
//显示本地IP地址
//CEdit* pBoxOne;
//pBoxOne = (CEdit*) GetDlgItem(IDC_EDIT_ShowLocalIP);
//HWND hShowIP = NULL;
//char *ip;
//hShowIP = (HWND) GetDlgItem(ip , IDC_EDIT_ShowLocalIP);

WSADATA wsaData;
char name[155];
char *ip;
PHOSTENT hostinfo; 
if ( WSAStartup( MAKEWORD(2,0), &wsaData ) == 0 ) { 
if( gethostname ( name, sizeof(name)) == 0) { 
if((hostinfo = gethostbyname(name)) != NULL) { //这些就是获得IP的函数
ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);

GetDlgItem(IDC_EDIT_ShowLocalIP)->SetWindowText(ip);
    Invalidate();
}
帮帮我
------解决方案--------------------
很明显,你这里应该是用系统的API的GetDlgItem,而不是是用mfc里面CWnd窗口类的GetDlgItem函数。系统的API 的GetDlgItem是两个参数的。你少了窗口句柄那个参数. 

自己看看微软MSDN的官方解析吧。因为你当前类不窗口类,或者是没有继承于窗口类,所以不能直接使用这个一个参数的函数。必须使用两个参数的系统api函数
------解决方案--------------------
可以的啊,看你是怎么调用SetWindowText这个函数的了:
一、使用窗口指针直接访问,SetWindowText只有一个参数
二、使用窗口句柄访问,SetWindowText有两个参数。
你贴上你的代码,帮你改
------解决方案--------------------
改成这样:
::SetWindowText(::GetDlgItem(hWnd, IDC_EDIT_ShowLocalIP), ip);
别少了前面那两个冒号