借用一个边框一般地 CPaintDC 和 CClientDC 生存期只是函数区域内我想要一个可以整个View里都可以访问的CDC可是这个东西又没有默认的构造函数如果在堆在创建
pdc = new CPaintDC(this);
我发现虽然可以用
但输出汉字总是不对如何才能得到当前的DC 还有就是CPaintDC和CClientDC的区别在哪
为什么要用CPaintDC

解决方案 »

  1.   

    要画图时,调用 
    GetDC();
    画完后
    调用
    ReleaseDC()
    就可以了.
      

  2.   

    CPaintDC一般用在ONPAINT函数里面,做一些PAINT的准备和清除工作.
    CCLIENTDC 是一个封装了 GETDC 和 RELEASEDC 的类.
      

  3.   

    我现在用GetDC 来获得可是为什么我的MessageBox全部变成了无响应了?程序就停在那不动了,消息框也不出来如果我先Release再MessageBox,结果程序就出错了
      

  4.   

    在头文件中定义一个CDC成员变量就行了.
      

  5.   

    不好贴,我说一下先定义一个指针然后我处理前GetDC然后开一个线程进行处理处理完毕发送消息,然后在消息处理函数中MessageBox最后在VIEW的析构函数中ReleaseDC现在MessageBox就没响应了而且不能正常输出汉字,是乱码
      

  6.   

    GetDC后我输出汉字发现是对的结果线程里跑一圈就不能正常输出汉字了
      

  7.   

    strcpy(lf.lfFaceName, pMyFont->name);
    lf.lfWidth = 0;
    lf.lfHeight =pMyFont->size * 20; // use twips
    lf.lfEscapement = 0;
    lf.lfOrientation = 0;
    lf.lfWeight =(pMyFont->bold)? FW_BOLD:FW_REGULAR;
    lf.lfUnderline = pMyFont->underline;
    lf.lfItalic = pMyFont->italic;
    lf.lfStrikeOut = pMyFont->strike;
    lf.lfCharSet = ANSI_CHARSET;

    pFont->CreateFontIndirect(&lf);字体名我用的是:Courier New
    换了宋体,也是一样,原来汉字不能正常输出原因在这但我字体创建成功了啊,为什么只对英文有效而中文乱码?