du7906
驱动牛犊
驱动牛犊
  • 注册日期2007-09-14
  • 最后登录2011-03-17
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望42点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2543回复:4

W2kPrintSample中如何在uni部分创建surface.

楼主#
更多 发布于:2009-04-24 11:35
hi, All
  
   有谁能帮忙分析一下:

    在W2kprintSample中的Rendering plug-in(UNI.DLL),默认的情况下用的是A4大小来建立GDI-Managed surface, 所以它的大小总是A4, A4大小是在GPD文件设定。  我现在想在rendering plug-in中修改surface大小,也是就是改变纸张大小,但不是在GPD文件中。各位能给点思路么?

另,我看了IOEMUNI::DriverDMS(...)说明,按理说我在此建立surface。我用了下面的代码:

HRESULT __stdcall IOEMUni::DriverDMS(
    PVOID   pDevObj,
    PVOID   pBuffer,
    DWORD   cbSize,
    PDWORD  pcbNeeded)
{
    TERSE(UNITEXT("IOEMUni::DriverDMS() entry.\r\n"));

    PDEVOBJ pdevobj = (PDEVOBJ)pDevObj;
    POEMPDEV pOemPDEV = (POEMPDEV)pdevobj->pdevOEM;

    SIZEL sizl;

    sizl.cx = 720;
    sizl.cy = 1200;
    
    HSURF hsurf = (HSURF)EngCreateBitmap(sizl, sizl.cy, BMF_1BPP, BMF_TOPDOWN, NULL);

    if(hsurf == NULL)
    {
        VERBOSE(UNITEXT("IOEMUni::DriverDMS() return E_FAIL.\r\n"));
        return E_FAIL;
    }

    EngAssociateSurface(hsurf, (HDEV)pdevobj->hEngine, HOOK_BITBLT|HOOK_TEXTOUT);
    


    return S_OK;
}


调试结果是: 接口函数进去了,使没有达到想要的结果,也没有改变纸张的大小。 不知道哪里有错?

天才白痴梦
lmz3000
驱动牛犊
驱动牛犊
  • 注册日期2009-03-16
  • 最后登录2011-06-09
  • 粉丝1
  • 关注0
  • 积分3分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-04-27 15:56
你好,想问问你打印彩色的时候,颜色会有问题,红色变成蓝色,蓝色变成红色啦,不知道怎么回事?
achellies
驱动牛犊
驱动牛犊
  • 注册日期2008-07-09
  • 最后登录2014-08-25
  • 粉丝1
  • 关注0
  • 积分9分
  • 威望73点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-05-04 13:23
引用第1楼lmz3000于2009-04-27 15:56发表的  :
你好,想问问你打印彩色的时候,颜色会有问题,红色变成蓝色,蓝色变成红色啦,不知道怎么回事?



BGR&RGB位图处理有问题。
achellies
驱动牛犊
驱动牛犊
  • 注册日期2008-07-09
  • 最后登录2014-08-25
  • 粉丝1
  • 关注0
  • 积分9分
  • 威望73点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-05-04 13:24
回 1楼(lmz3000) 的帖子
楼上有msn没?交流一下。
codewarrior
禁止发言
禁止发言
  • 注册日期2002-05-23
  • 最后登录2018-07-12
  • 粉丝0
  • 关注0
  • 积分5391分
  • 威望52850点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2009-05-05 19:39
用户被禁言,该主题自动屏蔽!
游客

返回顶部