我在对话框上添加了一个Custom Control,并将饼状图、条形图、线性图绘制在Custom Control上,现在我想将该控件上的图像打印出来,要求实现打印和打印预览的功能。
另外:怎样将Custom Control上的图像存储为bmp格式的文件
请各位大哥指教

解决方案 »

  1.   

    Custom Control是窗口类的话,可以先得到Custom Control的窗口handle,然后通过GetClientDC()得到hdc,后面就好办了,参考:
    http://www.vckbase.com/document/viewdoc/?id=181
      

  2.   

    void Print( )
    {
    PRINTDLG pd;
    pd.lStructSize = sizeof( PRINTDLG );
    pd.Flags = PD_RETURNDC;
    pd.hDC = NULL;
    pd.hwndOwner = NULL;
    pd.hInstance = NULL;
    pd.nMaxPage = 1;
    pd.nMinPage = 1;
    pd.nFromPage = 1;
    pd.nToPage  = 1;
    pd.nCopies = 1;
    pd.hDevMode = NULL;
    pd.hDevNames = NULL;if( !PrintDlg( &pd ) ) // 显示打印对话框,由用户来设定纸张大小等。
    {
        return; // 用户取消,打印失败
    }ASSERT( pd.hDC != NULL );
    int iHorRes = GetDeviceCaps(pd.hDC, HORZRES);
    int iVerRes = GetDeviceCaps(pd.hDC, VERTRES);DOCINFO di;
    di.cbSize = sizeof(DOCINFO);
    di.lpszDocName = _T("标题");
    di.lpszOutput = NULL; 
    di.lpszDatatype = NULL; 
    di.fwType = 0;
    StartDoc( pd.hDC, &di );StartPage( pd.hDC ); // 开始打印第一页
    // 直接用普通 GDI 函数在pd.hDC上绘制即可。iHorRes, iVerRes 分别为 DC 的宽度和高度(象素)
    EndPage( pd.hDC );StartPage( pd.hDC ); // 开始打印第二页
    // ...
    EndPage( pd.hDC );EndDoc( pd.hDC );    // 打印完毕
    DeleteDC( pd.hDC );
    }
      

  3.   

    请教各位怎样将Custom Contrlo的图像复制到剪切版上如果你知道怎样将信息复制到剪切版上,不妨也说说,来着有分,分不够再加
      

  4.   

    HDC hReferenceDC = ::GetDC( NULL );
    HDC hDC = ::CreateEnhMetaFile( hReferenceDC, NULL, NULL,_T("") );
    ::ReleaseDC( hReferenceDC );// ..., 在 hDC 上用普通的 GDI 函数绘制图形HENHMETAFILE hMetaFile = ::CloseEnhMetaFile( hDC );::OpenClipboard( m_hWnd );
    ::EmptyClipboard( );
    ::SetClipboardData( CF_ENHMETAFILE, hMetaFile );                                                                                 
    ::CloseClipboard( ); // hMetaFile 交给剪贴板删除。// 复制完成,在“画图”中粘贴即可看到图形。
      

  5.   

    修正:::ReleaseDC( NULL, hReferenceDC );