比如我要在CMyView类的构造函数中或者OnCreate()中初始化一个CClientDC dc(this);
可要声明CDC dc然后怎么初始化?
还是说我要用HDC dc然后把它和CDC类的对象关联起来?
还是用CDC* pDC然后。?
求解答!

解决方案 »

  1.   

    感觉应该是这样:用CClientDC pDC=CDC::FromHandle(GetDC(this));
      

  2.   

    dc和具体窗口有关,而且每个窗口的dc是有限的,因此要从窗口里获得dc
    hdc可以从dc里获取,或直接用windows api
      

  3.   

    我倒是试了试,CDC类对象不能给CClientDC赋值,如果用CDC类指针在view中的各个函数中表现也不成功:1 在OnCreate()中让m_pDC=GetDC()但是我在哪个函数中ReleaseDC(m_pDC)呢?OnDestroy()吗。
    2 我想知道dc是和窗口相关还是和view相关?view可以无限多个,dc可以有几个?
    3 我的目标只不过是想用一个成员变量表示CClientDC,然后在一个函数中对它修改,比如改变字体,然后在另外的函数中就可以使用了。这个愿望能实现吗?
      

  4.   

    1 在OnCreate()中让m_pDC=GetDC()但是我在哪个函数中ReleaseDC(m_pDC)呢?OnDestroy()吗。
    不需要保持一个dc,画图时申请2 我想知道dc是和窗口相关还是和view相关?view可以无限多个,dc可以有几个?
    和窗口相关,好像最多5个3 我的目标只不过是想用一个成员变量表示CClientDC,然后在一个函数中对它修改,比如改变字体,然后在另外的函数中就可以使用了。这个愿望能实现吗?
    保存一个CFont对象就可以了,反正在绘图前后都要SelectObject