我创建了 一个 类CLed;是 从CStatic继承而来的(class CLed : public CStatic)我在这个 类里面GetDC(),结果发生了 断言,在 这边中断了 ,也 就是 在 这边获得DC失败了,我测试了 一下,结果是 在这个类里面m_hWnd是NULL,也就是没有获得句柄值,问了 网友才知道原来需要 先创建(Create)才可以 获得DC,我 是新手能明白他说的意思,没有 窗口怎么能获得DC呢?但是具体怎么创建呢??请搭建帮我 一下!!

解决方案 »

  1.   

    如果是对话框程序,可以不用创建,直接通过类向导生成一个CStatic的变量,然后把.h中的CStatic变量申明改为CLed就可以了
      

  2.   

    问题的关键在于你GetDC用在什么地方了,如果此时这个窗体还没有建立,当然是当了。所以你应该看一下GetDC()是在什么地方调用的。
      

  3.   

    你如果在OnPaint中用GetDC一定会成功,因为此时窗口一定会创建出来,另外,ID也要改一下,不能是默认ID。
      

  4.   

    你的CLed是继承的CStatic,那你是不是要在CLed控件上画图啊?是的话,不用GetDC(),直接在Cled的Onpaint()方法里,用CPaintDC dc(this);就可以获得DC了
      

  5.   

    CLedclass CLed : public CStati
    { Void Create()
    }CLedclass::Create()
    {
      CStatic::Create() //First Step
      GetDC(this)  //则可
    }//DC的获得
    //Hand 
    //CDC
    //DC 数据成员
      

  6.   

    需要子类化或者 创建对象,就是有窗口句柄已经存在才能用GetDC