GetDlgItem为什么有时候需要两个参数 getdlgitem返回空

GetDlgItem的用法

基本用法(得到当前对话框中的控件):CButton* btn = (CButton*)GetDlgItem(IDC_BUTTON_SEND);
btn->SetWindowTextW(_T("hello"));如果想得到其他对话框中的控件,用GetDlgItem(hwnd,IDD);

CWnd::GetDlgItem(int nID)

这个是一个类成员函数,可使用CWnd* pWnd = GetDlgItem(ID_XXX);
而HWND GetDlgItem(
HWND hDlg, // handle of dialog box
int nIDDlgItem // identifier of control
);
是一个sdk的函数

两个的主要区别是用的地方不一样
一个参数的是在窗口中调用的函数,两个参数的是在平台SDK中调用的

你在对话框类里面调用GetDlgItem(IDC_BOARD_SIZE),就是调用的类成员函数CWnd::GetDlgItem

获得某个控件的句柄GetDlgItem(IDC_BOARD_SIZE)->m_hWnd就可以了


如果要用到第二种用法,要这样
::GetDlgItem(this-> m_hWnd,IDC_BOARD_SIZE);
效果一样的

那个IDC_BOARD_SIZE是你某个控件的id,

如果HWND GetDlgItem(
HWND hDlg, // handle of dialog box
int nIDDlgItem // identifier of control
);的话,
第一个参数是窗体的句柄,第二个参数是某个控件的ID,和IDC_BOARD_SIZE是一个意思

GetDlgItem(IDC_..),GetDlgItem(HWND hWnd,IDC_..)该如何使用,我在使用前者时老报错,提示应使用后者,但后者的hWnd不知如何获取。

GetDlgItem(IDC_..)是一个非静态方法,意思是你对话框内获取该控件指针,所以这里不需要获取对话框句柄,也就是说你如果在非对话框窗口里面调用这个方法就肯定会出错
GetDlgItem(HWND hWnd, IDC_..)是一个静态方法,它是一个让你指定从哪个对话框里获取控件指针
举个例子:你调用了上厕所这个函数,如果你在家里的话肯定是在自己家里上厕所,所以不需要知道在哪里上厕所(hwnd)
如果你在室外那么上厕所就一定要选一个地方(hwnd)。
如果说你上厕所的地方都不是一个房间,那么肯定会报错嘛,因为你在随地大小便,哈哈
所以你先搞清楚这两个函数的使用环境区别
GetDlgItem为什么有时候需要两个参数 getdlgitem返回空
再者,你问这个问题说明了你还没有搞清楚对话框是一个什么东西,建议学习一下深入浅出MFC

  

爱华网本文地址 » http://www.aihuau.com/a/25101017/360573.html

更多阅读

设置一台电脑两个显示器的方法 怎么设置两台显示器

设置一台电脑两个显示器的方法——简介 双显示器设置,如何设置一台电脑两个显示器:一般来说一台电脑通常只配一个显示器,在我们平时的的工作、娱乐基本上都是这样的搭配。但是这种用法,当您打开多个窗口的时候,一个显示器空间就显得很晓

一台电脑接两个显示器,双屏显示介绍 双屏显示器连接

一台电脑接两个显示器,双屏显示介绍双屏显示的原始需求一台电脑配一个显示器应该是最常见的搭配,我们日常的工作、娱乐基本上都是这样的搭配。但是这种用法,当您打开多个窗口的时候,一个显示器就显得很拥挤,尤其是做一些复杂工作,比如分析

转载 明明是两个世界的人,永琪为什么会爱上小燕子 永琪小燕子

原文地址:明明是两个世界的人,永琪为什么会爱上小燕子作者:依岸竹篱和王若谷先生讨论了半天永燕的问题,他说这两个人是两个世界的人,他们谈不上心灵相通,永琪怎么会爱上小燕子,爱从哪里来?回复了一大段,决定作为博文发出来五阿哥爱上小燕子

声明:《GetDlgItem为什么有时候需要两个参数 getdlgitem返回空》为网友丆喜友亽分享!如侵犯到您的合法权益请联系我们删除