自己写的一个类
Class MyClass : public CWnd
{
    //.....
};
--------------------
在主窗口类CMyAppDlg中 有如下成员变量的定义
    //.....
public:
    MyClass* nc;
    //.....
在OnInitDialog中有
BOOL CMyAppDlg::OnInitDialog()
{
    //....
    nc = new MyClass();
    //....
}
--------------
现在我遇到的问题是
在nc = new MyClass();后
MyClass的句柄为0x00000000
如何改写构造函数,才能使动态分配空间后MyClass的句柄不为空呢?

解决方案 »

  1.   

    new之后的句柄肯定是空的,哪怕是MFC的控件也是这样。
    在new之后,需要调用nc->Create()函数来创建窗口后,才会生成句柄/
      

  2.   

    呵呵,需要Createnc = new MyClass();
    nc->Create(...);
    你要是把Create放到构造函数里也可以
      

  3.   

    自已调Create吧,或是MyClass的构造函数中Create.
      

  4.   

    因为你是继承自CWnd所以你要把自己的窗体创建出来!
    同意上面的!
    Create!!!!!
      

  5.   

    因为你是继承自CWnd所以你要把自己的窗体创建出来!
    要 Create 的
      

  6.   

    支持一楼,new之后,只是申明了内存空间,但是还需要调用nc->Create()函数来创建窗口后,才会生成句柄。
      

  7.   

    nc = new MyClass();
    是这样创建类的吗?
    应该是这样的吧:
    nc = new MyClass;
      

  8.   

    关键代码如下:
    Class MyClass : public CWnd
    {
    public:
        MyClass(CWnd* pParent);
        ~MyClass();
        //............
    };MyClass::MyClass(CWnd* pParent)
    {
        //弱弱的问 怎么Create!这个类没有任何资源ID与其对应
    }
      

  9.   

    在Resource.h里面添加一条定义
    例如:
    #define ID_MYCLASS     10101
    例子:
    nc=new MyClass()
    nc->Create(NULL,NULL,WS_CHILD,CRect(100,100,200,200),AfxGetMainWnd(),ID_MYCLASS);