我的对话框有一个PICTURE控件,并定义了:
CDC MemDispDC;(屏幕内存DC)MemDispDC.CreateCompatibleDC(&DispDC)
CDC MemPrintDC;(打印内存DC)MemPrintDC.CreateCompatibleDC(&PrintDC)
CDC DispDC
CDC PrintDC我现在想把PICTURE控件显示的内容打印出来,流程是否是这样:
1.先在MemDispDC画东西,画完拷贝到DispDC
2.把DispDC内容拷贝到MemPrintDC(这里会不会出现兼容方面的问题,因为MemPrintDC是和打印设备兼容的内存DC,而DispDC是屏幕DC)
3.MemPrintDC内容拷贝到PrintDC
或者:
1.先在MemDispDC画东西,画完拷贝到DispDC
2.MemDispDC内容直接拷贝到PrintDC请各位有经验的朋友支招。

解决方案 »

  1.   

    做打印的话,你用屏幕内存DC和屏幕DC干什么。应该直接用打印DC做相应处理,过程与在屏幕中显示相同。
      

  2.   

    你只要做好一个函数,然后参数用一个DC就能支持两种方式了。
    void Draw(CDC *pDC)
    {
        ......
    }
    打印时,传入打印DC;显示时,传入屏幕DC。
    ......可以用你屏幕显示的模块。
      

  3.   


    兄弟,我大概知道你意思了。你是说,当我要显示时:MemDispDC.CreateCompatibleDC(&DispDC)
    把MemDispDC传进去;而当我要打印时:MemPrintDC.CreateCompatibleDC(&PrintDC),把MemPrintDC传进去即可。
    兄弟,我还想问最后一个问题,答完结贴给分:我想把整个客户区,包括picture控件的内容,按钮,静态文本之类的统统打印出来,是不是这样可行:printDC.StretchBlt(....GetClientDC(),...);