GetDlgItem(IDC_..)是一个非静态方法,意思是你对话框内获取该控件指针,所以这里不需要获取对话框句柄,也就是说你如果在非对话框窗口里面调用这个方法就肯定会出错
GetDlgItem(HWND hWnd, IDC_..)是一个静态方法,它是一个让你指定从哪个对话框里获取控件指针
举个例子:你调用了上厕所这个函数,如果你在家里的话肯定是在自己家里上厕所,所以不需要知道在哪里上厕所(hwnd)
如果你在室外那么上厕所就一定要选一个地方(hwnd)。
如果说你上厕所的地方都不是一个房间,那么肯定会报错嘛,因为你在随地大小便,哈哈
所以你先搞清楚这两个函数的使用环境区别
再者,你问这个问题说明了你还没有搞清楚对话框是一个什么东西,建议学习一下深入浅出MFC
GetDlgItem
函数功能:该函数检索指定的对话框中的控制句柄。 函数原型:HWND GetDlgltem(HWND hDlg,int nlDDlgltem); 参数: hDlg:标识含有控制的对话框。 nlDDlgltem:指定将被检索的控制标识符。 返回值:如果函数调用成功则返回值为给定控制的窗口句柄。如果函数调用失败,则返回值为NULL,表示为一个无效的对话框句柄或一个不存在的控制。若想获得更多错误信息,请调用GetLastError函数。 备注:可以通过使用任何父子窗口对来使用GetDlgltem函数,而不仅只是对话框。只要hDlg参数指定一个父窗口,且子窗口有一个独立的标识符(象CreateWindow中hMenu参数指定的或创建子窗口的CreateWindowEx指定的那样),GetDlgltem就会返回一个有效的句柄到子窗口。 Windows CE:GetDlgltem函数只为对话框中的直接于控制工作,它不通过嵌套的对话框来搜寻。 速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;库文件:user32.lib。