FAQ1:pDlg

来源:互联网 发布:js json 取值 编辑:程序博客网 时间:2024/04/28 08:56

FAQ1:pDlg

2010-10-26 10:37:29
Q0:CNetphonedlg* pDlg 是什么指针数据?
pDlg->GetDlgltem(IDC_BUTCOMMUNICATE)->EnableWindow(TRUE)
->是什么意思?
GetDlgltem(IDC_BUTCOMMUNICATE)是什么意思?
EnableWindow(TRUE)是什么意思? 
A0:CNetphonedlg* pDlg很明显是个对话框指针,但具体是什么对话框要看你的工程。
IDC_BUTCOMMUNICATE是对话框pDlg上某个控件的ID,pDlg->GetDlgltem(IDC_BUTCOMMUNICATE)这句的意思是得到对话框pDlg上ID为IDC_BUTCOMMUNICATE的控件指针,然后执行后面的操作:EnableWindow(TRUE) ,它是使得该控件的状态变为可用
->的作用是引用成员,比如CNetphonedlg* pDlg,这里的CNetphonedlg是一个类,pDlg是一个对象指针,我们就可以使用pDlg->来访问类CNetphonedlg的成员函数或成员变量。
Q1:CTestDlg *pdlg=new CTestDlg怎么可以这样
A1:new是一个操作符,返回的是一个指针,就这么简单,pdlg是一个指针,这个指针指向刚new出来的对象。
Q2: CTestDlg *pdlg = new CTestDlg;
为什么不这样写:CTestDlg *pdlg = new CTestDlg(),即在最后面加一个括号。
A2: new CTestDlg;说明要创建一个CTestDlg类的实例,而CTestDlg()是这个类的构造函数,你怎么可能为一个函数开辟内存空间呢?这两种写法的意义是不同滴~~!
 Q3 能不能详细解释一下
 CMyDlg   *pDlg; pDlg-> CMyDlg   Dlg; Dlg. 的各自使用,区别
A3.1 前面是个实例指针,后面是个实例
A3.2 CMyDlg   Dlg要调用默认的构造函数,前面不用。
A3.3 后面那个是真正有这么一个东西   CMyDlg的对象存在。 
   而前者只是一个指针,说是要指向一个CMyDlg的对象,可这个对象在哪儿?如果没有指定便使用,就会出错。一般是new一个CMyDlg,让这个指针指向它
A3.4 CMyDlg   *pDlg;是一个指针,用的时候要初始化,要不让它指向于一个已存在的对象,要就new一个新的对象,pDlg=new   CMyDlg   ;这样的话,不用的时候要记得删除它(delete   pDlg),用的时候还要create()和showwindow()。
 CMyDlg   Dlg;是一个实例对象,可以直接用它,但也要create()和showwindow()。只是不用删除它,程序退出的时候自己会删除它
Q4:m_pDlg->GetSafeHwnd() 这个函数什么意思
A4:CWnd::GetSafeHwndHWND GetSafeHwnd( ) const;返回值:返回窗口的句柄。如果CWnd对象没有与一个窗口连接或它使用的CWnd指针为NULL,则返回NULL。当我们想得到一个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数,而你前面用m_pDlg调用它,说明你获得的是m_pDlg是指向一个CDialog对象的句柄。
再获得了一个对话框的句柄之后,你就可以通过这个句柄对对话框做出几乎任何的操作。你的if(m_pDlg->GetSafeHwnd()==0)可以判断这个对话框的是否有句柄,如果句柄值为零说明你的对话框有问题,也就可以判断下面的东西了。
 
原创粉丝点击