我在做一个对话框的打印预览,就是预览打印的东西是对话框中的,文字是可以实现。 我是参考其他的文章,自己建了个frame类和view类,下面是预览窗口显示的具体代码。
比如:在函数中,可以这样做
在.h文件中定义
         UINT  m_cxOffset;
UINT m_cyPrinter;
LRESULT CDayinyulan923Dlg::OnMyPrint(WPARAM wParam,LPARAM lParam)
{    CString  as="公交卡第六感觉";
    pDC->TextOut(30*m_cyPrinter,10*m_cxOffset,as);
}
这样就实现了文章的显示
对于工程中有的图片,可以用  HBITMAP hBitmap=::LoadBitmap(AfxGetInstanceHandle(),(LPCTSTR)IDB_BITMAP1);来实现
IDB_BITMAP1就是工程中的ID号。
问题:
1) 可是比如说我在对话框中加入了一个静态图片,那么我怎么把它在预览中显示呢?
2) 而且有可能我是用插件做的图,比如teechart,那么我又怎么把teechart的图在预览中实现呢?

解决方案 »

  1.   

    1.pDC->BitBlt函数  即可
    2.你那个什么插件?只要做出来的图片用LoadBitmap引入即可
      

  2.   


    不好意思哈,我是个菜鸟我有两个问题想问一下
    一:bitblt的用法:上面写的什么句柄什么的,我不是太理解,有一段代码是这样的
    CDC* pDC = (CDC*)wParam;
    HBITMAP hBitmap=::LoadBitmap(AfxGetInstanceHandle(),(LPCTSTR)IDB_BITMAP1);
    pDC->CreateCompatibleDC(NULL); 
      SelectObject(*pDC,tempBmp);
      pDC->MoveTo(0,0);   //绘图
      pDC->LineTo(10,10);
      pDC->BitBlt(0,0,20,20,pDC,0,0,SRCCOPY);
    可是这样不行啊,调试通不过,错误在哪里呢?
    IDB_BITMAP1是我添加在工程中的图片。
    二:假如我仅仅是在对话框中添加了一个静态的图片id为IDC_STATIC1  成员变量为m_static1
    我用了这样的语句:
    HBITMAP hBitmap=::LoadBitmap(AfxGetInstanceHandle(),(LPCTSTR)m_static1);
    也报错了~
    是怎么回事呢?
    希望你能看下帮帮忙哈,谢谢你了
      

  3.   

    还想请教大家个问题
    BitBlt (目标hDC, 目标X, 目标Y, 图像高, 图像宽, 源hDC, 源X, 源Y, 光栅运算常数)一:这个函数中目标hdc就是我的预览口,那么原hdc是什么呢?如果我是在对话框中有一副图,那个这个源hdc是不是就是那个对话框的对象呢?还是对话框的ID号?
    二:如果把对话框中显示的图片预览,是不是就是相当于在这个函数中,对话框就是源hdc 源x,源y就是图片在在对话框框中的坐标。目标hDC, 目标X, 目标Y, 图像高, 图像宽,就是目标设备里的图像的显示位置了。如果是这样的话那么函数该怎么写呢?我如何得到对话框中的图片的坐标呢?是个新手,刚刚做这个东西,很多基本的概念还不是太清楚,请各位见谅了哈~
      

  4.   

    HBITMAP hBitmap=LoadBitmap(IDB_BITMAP1);
    这样应该可以吧,你搞不清楚句柄就用默认的。
      

  5.   

    HBITMAP hBitmap=LoadBitmap(IDB_BITMAP1);
      

  6.   


    可是是这样的一个问题我添加的静态图片,或者用插件做的图片在工程里是没有id的啊~
    请看看下面的:
    二:假如我仅仅是在对话框中添加了一个静态的图片id为IDC_STATIC1 成员变量为m_static1
    我用了这样的语句:
    HBITMAP hBitmap=::LoadBitmap(AfxGetInstanceHandle(),(LPCTSTR)m_static1);
    也报错了~