HDC hdc;   
  hdc=GetDC(hwnd);  
  MoveToEx(hdc,100,100,NULL);   
  LineTo(hdc,200,200);  
  想传递这个 hdc 给打印函数,打印出来,如何来实现?谢谢

解决方案 »

  1.   

    把位图选进DC.再得到一个打印DC.把位图贴到DC里就行了.只要得到打印DC,就跟平时的屏幕DC的操作是一样的了.
      

  2.   

    能给出一点代码吗?
    用windows API 来实现
      

  3.   

    HDC hdcprint;
    hdcprint=CreateDC(szDriver,szDevice,szOutput,NULL)
    这样创建之后,如何把要打印的图形放进去打印?
      

  4.   

    void OnPrint()
    {
    char szprinter[80];
    char *szDevice, *szDriver, *szOutput;
    HDC hdcprint; 

    static DOCINFO di={sizeof(DOCINFO), "文件名", NULL}; 

    GetProfileString("windows", "device", ", ,,",szprinter,80); 

    if (NULL != (szDevice = strtok(szprinter, ","))&&
    NULL != (szDriver = strtok(NULL, ","))&&
    NULL != (szOutput = strtok(NULL, ",")))

    if ((hdcprint = CreateDC(szDriver, szDevice, szOutput, NULL)) != 0)
    {
    if (StartDoc(hdcprint,&di)>0) 

    StartPage(hdcprint); 
    SaveDC(hdcprint); 

    TextOut(hdcprint, 100, 100, "这是一个API打印例子", 100); 

    MoveToEx(hdcprint, 220, 220, NULL);
    LineTo(hdcprint, 800, 800);//这里可以选入窗口dc中的位图(即你要打印的图形),或者用DrawState直接绘制在hdcprint上
    SelectObject(hdcprint, hBitmap);
    或者绘制位图用DrawState(hdc, NULL, NULL, hBitmap, 0, x, y, cx, cy, DST_BITMAP|DSS_NORMAL) RestoreDC(hdcprint, -1); 
    EndPage(hdcprint); 
    EndDoc(hdcprint); 
    MessageBox(hWnd, "打印测试完毕!", "提示", MB_ICONINFORMATION);
    }

    DeleteDC(hdcprint);
    }
    else
    {
    MessageBox(hWnd, "没有默认打印机,或者没有安装打印机!", "提示", MB_ICONINFORMATION);
    return;
    }
    }