热情软件屋

 

如何使用Formula One 5.0的PrintDevMode属性


编号:QA000296
建立日期: 1999年1月5日 最后修改日期:1999年1月5日
所属类别:

sansunlin:
    如何使用Formula One 5.0的PrintDevMode属性读写Windows API的DEVMODE的打印结构?

回答:

    Formula One 5.0的PrintDevMode属性实际上是一个储存DEVMODE的一个全局句柄。下面是Formula One 5.0的开发者Tidestone Technologies, Inc.提供给我的一段例子(设置纸张大小为A4),使用C++写的,供你参考。
    ///////////////////////// Solution ///////////////////////////////////
    ///// Note: only call once (for instance when the F1Book is initialized)
    ///// Access devmode dierctly from F1 book after that
    void SetA4Paper(CWinApp& myApp,CF1Book& book)
    {
    PRINTDLG pd; pd.lStructSize = (DWORD) sizeof(PRINTDLG);
    myApp.GetPrinterDeviceDefaults(&pd);
    HGLOBAL hAppDevMode, hGridDevMode;
    LPDEVMODE pAppDevMode, pGridDevMode;
    hAppDevMode = pd.hDevMode;
    pAppDevMode = (LPDEVMODE)::GlobalLock(hAppDevMode);
    if (pAppDevMode)
     {
    hGridDevMode = ::GlobalAlloc(GHND, pAppDevMode->dmSize +
    pAppDevMode->dmDriverExtra);
    pGridDevMode = (LPDEVMODE)::GlobalLock(hGridDevMode);
    //pAppDevMode = (LPDEVMODE)::GlobalLock(hAppDevMode);
    CopyMemory(pGridDevMode, pAppDevMode, pAppDevMode->dmSize +
    pAppDevMode->dmDriverExtra);
    pGridDevMode->dmPaperSize=DMPAPER_A4;
    // Unlock memory handles.
    GlobalUnlock(hAppDevMode);
    GlobalUnlock(hGridDevMode);
    
    book.SetPrintDevMode((long) hGridDevMode);
     }
    }
    
    /////////////////// Solution end ////////////////////////////

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio