MyException - 我的异常网
当前位置:我的异常网» VC/MFC » 关于对话框各种指针的纳闷.

关于对话框各种指针的纳闷.

www.myexceptions.net  网友分享于:2013-04-10  浏览:4次
关于对话框各种指针的迷惑...
菜鸟一个,最近在用VC6.0的基于对话框的MFC EXE,对有些概念很模糊,请大侠们指教。

假设对话框的类名是CMyDlg,那么
我看有些资料上写的是:
主对话框的指针是 CWnd* pWnd=AfxGetMainWnd();
主对话框的句柄是 HWND hWnd=pWnd->m_hWnd;

我还见到:
CMyDlg* pDlg;

另外还有this指针。

我就想问,指针pWnd和指针pDlg是一回事吗?如果不是一回事,分别代表什么呢?
this指针又是和哪个指针是一回事?

总之,它们有什么异同呢?请高手通俗解释下吧!谢谢!

------解决方案--------------------
 CWnd* pWnd=AfxGetMainWnd(); 获取的当前主窗口的指针;
 HWND hWnd=pWnd->m_hWnd; 当前主窗口的句柄;
 this指针是c++类内维护的一个指向对象自己的指针,在CMyDlg内this指向的就是主窗口的指针了。
 CMyDlg* pDlg; 是自定义的对话框指针,当pDlg = this; 时pDlg就指向了主窗口了。
 
 
------解决方案--------------------
只要是CMyDlg类内的this,那就是一回事
------解决方案--------------------
class MyClass
{
public:
  void MyFun(){
//this 这里指向自己,比如你调一个函数需要MyClass对象为参数是 你可以直接传this
Add(this);
};
private:
  int i;
}
class MyClass1
{
public:
  void MyFun(){
//this 这里指向MyClass1,如果你还要调用Add则需要
MyClass *p = new MyClass();
Add(p);
};
private:
  int i;
}


------解决方案--------------------
引用:
引用:每个类内都有this指针
this指针应该是指向类的一个实例的吧?
那窗口类CMyDlg的实例是什么呢?就是指的窗口吗?

您说:“每个类内都有this指针”,举例来说,我定义了一个类
class MyClass
{
public:
  void MyFun();
private:
  int i;
}
那……



i = 0;
void MyClass::MyFun(){
    i = 1;
}
this指针可以简单理解为每个类的默认对象。。。在该类(MyClass)的cpp文件中给i赋值,其实是给this.i赋值。。。上面代码等价于

this.i = 0;
void MyClass::MyFun(){
    this.i = 1;
}
------解决方案--------------------
CWnd* pWnd=AfxGetMainWnd(); 获取的当前主窗口的指针;
 HWND hWnd=pWnd->m_hWnd; 当前主窗口的句柄;

CMyDlg* pDlg 窗口类都继承自CWnd,
CMyDlg 是CWnd的子类 
CWnd* pWnd 指针可指向所有窗口子类,操作子类中与CWnd相同的成员与函数。 具体的,c++中的类相关知识。
HWND hWnd 窗口的句柄;是widows系统中所有窗口的唯一id。
通过这个id,你可以找到这个id代表的窗口实例,可以向这个窗口发送消息等




文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有