1. 程式人生 > >如何修改使用 DocumentProperties() 函式的印表機設定

如何修改使用 DocumentProperties() 函式的印表機設定

   LPDEVMODE GetLandscapeDevMode(HWND hWnd, char *pDevice)
   {

   HANDLE      hPrinter;
   LPDEVMODE   pDevMode;
   DWORD       dwNeeded, dwRet;

   /* Start by opening the printer */ 
   if (!OpenPrinter(pDevice, &hPrinter, NULL))
       return NULL;

   /*
    * Step 1:
    * Allocate a buffer of the correct size.
    */ 
   dwNeeded = DocumentProperties(hWnd,
       hPrinter,       /* Handle to our printer. */ 
       pDevice,        /* Name of the printer. */ 
       NULL,           /* Asking for size, so */ 
       NULL,           /* these are not used. */ 
       0);             /* Zero returns buffer size. */ 
   pDevMode = (LPDEVMODE)malloc(dwNeeded);

   /*
    * Step 2:
    * Get the default DevMode for the printer and
    * modify it for your needs.
    */ 
   dwRet = DocumentProperties(hWnd,
       hPrinter,
       pDevice,
       pDevMode,       /* The address of the buffer to fill. */ 
       NULL,           /* Not using the input buffer. */ 
       DM_OUT_BUFFER); /* Have the output buffer filled. */ 
   if (dwRet != IDOK)
   {
       /* If failure, cleanup and return failure. */ 
       free(pDevMode);
       ClosePrinter(hPrinter);
       return NULL;
   }

   /*
        * Make changes to the DevMode which are supported.
    */ 
   if (pDevMode->dmFields & DM_ORIENTATION)
   {
       /* If the printer supports paper orientation, set it.*/ 
       pDevMode->dmOrientation = DMORIENT_LANDSCAPE;
   }

   if (pDevMode->dmFields & DM_DUPLEX)
    {
       /* If it supports duplex printing, use it. */ 
       pDevMode->dmDuplex = DMDUP_HORIZONTAL;
   }

   /*
    * Step 3:
    * Merge the new settings with the old.
    * This gives the driver an opportunity to update any private
    * portions of the DevMode structure.
    */ 
    dwRet = DocumentProperties(hWnd,
       hPrinter,
       pDevice,
       pDevMode,       /* Reuse our buffer for output. */ 
       pDevMode,       /* Pass the driver our changes. */ 
       DM_IN_BUFFER |  /* Commands to Merge our changes and */ 
       DM_OUT_BUFFER); /* write the result. */ 

   /* Finished with the printer */ 
   ClosePrinter(hPrinter);

   if (dwRet != IDOK)
   {
       /* If failure, cleanup and return failure. */ 
       free(pDevMode);
       return NULL;
   }

   /* Return the modified DevMode structure. */ 
   return pDevMode;

   }

相關推薦

如何修改使用 DocumentProperties() 函式印表機設定

LPDEVMODE GetLandscapeDevMode(HWND hWnd, char *pDevice) { HANDLE hPrinter; LPDEVMODE pDevMode; DWORD dwNeeded, dwRet; /* S

列印過程中修改印表機設定orientation等

使用ResetDC & DEVMODE 特別注意: 1)Note that a call to ResetDC resets all device context attributes back to default values. 2)The s

如何使用 SetPrinter 修改印表機設定

// MySetPrinter // // Demonstrates how to use the SetPrinter API. This particular function changes the orienation // for the printer specified in pPrint

C++ 印表機設定

我在網上已不斷看到一些網友關於自定義紙張列印的問題,基本上還沒有較完美的解決方案,我在這裡提供一個WindowsNT/2000/XP下的解決辦法,供廣大同仁參考。Windows9x/Me下也有解決辦法,有興趣者可共同探討。  該方法的主要思想是在程式開始時新增自定義紙張並設為預設紙張,程式結束前刪除該自定義紙

教您修改TeamViewer的視訊設定

TeamViewer作為安全可靠的遠端協助軟體,不僅可以用來遠端控制,還能進行視訊,那麼在使用該功能之前可以進行設定,本節學習修改視訊設定的方法。 具體設定步驟如下: 1.雙擊桌面的快捷方式啟動TeamViewer遠端協助軟體,這樣就可以開啟軟體主介面,直接用滑鼠點選其它選單,選擇選項來開啟

獲取印表機設定的紙張引數

PrintDialog BS = new PrintDialog(); int x = BS.PrinterSettings.DefaultPageSettings.PaperSize.Width;//印表機預設紙張大小

MySQL修改root密碼及設定許可權

轉自:https://www.cnblogs.com/antis/p/5468615.html?tdsourcetag=s_pcqq_aiomsg 整理了以下四種在MySQL中修改root密碼的方法,可能對大家有所幫助! 方法

使用指標無法修改函式的值

#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 typedef struct Lnode { int data; struct Lnode * next; }

不能修改“System Roots”鑰匙串 要更改根證書是否會被信任,請在“鑰匙串訪問”中開啟它,然後修改它的信任設定

問題: 在做 ios 開發 安裝 根證書時 遇到如下提示: 不能修改“System Roots”鑰匙串 要更改根證書是否會被信任,請在“鑰匙串訪問”中開啟它,然後修改它的信任設定 解決方法: 1、點選“鑰匙串訪問”頁面左側“種類”中的“登陸”或“login”,然後把藥安裝的 根證書 拖進去,

函式修改函式的值

 //子函式要想修改父函式的值,必須要①傳指標【例程式碼1】 ②解引用【例程式碼2】//但傳指標解引用也不一定能成功修改,因為可能有野指標【例程式碼3】   /*//【程式碼1】 :輸出結果為 10,20//【因為沒有傳指標,則Swap_err1

python函式——字典設定預設值 setdefault()

文章目錄 setdefault()描述 setdefault()用法 setdefault()示例 setdefault()描述 Python 字典 setdefault() 函式是新增鍵並將值設為預設值。 當

layui中radio的動態載入(進入修改頁面時,設定radio)

動態設定   radio  的值讓它處於選中狀態 效果圖 : 前端程式碼: <div class="layui-form-item"> <label class="layui-form-label">狀態</label>

NN模型設定--損失函式設定

人臉的loss   1)Softmax 是最常見的人臉識別損失函式,然而,Softmax 不會顯式的優化類間和類內距離的,所以通常不會有太好的效能。   2)Triplet Loss 作為一種 Metric Learning,也在人臉識別中廣泛使用。   相比 Softmax,其特點

Win10和Win7共享印表機設定方法

Win10和Win7如何共享印表機呢?當局域網中同時存在Win10和Win7系統,同時區域網中只有某一臺計算機連線有印表機時,我們可以通過區域網印表機共享操作來實現印表機共享。下面就與大家分享一下區域網電腦共享印表機的具體設定方法。

keras 預訓練模型finetune,多模型ensemble,修改loss函式,調節學習率

keras 預訓練模型finetune,多模型ensemble,修改loss函式,調節學習率 載入預訓練模型並finetune 修改loss函式 兩個網路做ensemble,進行網路訓練,調節learning rate 載入預訓練模型並fi

[WordPress]修改comment_form()函式實現個性化評論框

在製作Wordpress模版的時候,其中文章評論框是通過呼叫comment_form()函式即可實現,它將完成評論框的“姓名”、“電子郵件”、“站點”以及評論內容輸入框和“提交”按鈕的介面展示,但這個對於追求模版個性化的朋友來說,這肯定滿足不了你的需求。 我最近正好遇到的一個問題,有些朋友不知道如何

php的header函式設定content-type

設定常用的content-type: //定義編碼 header( 'Content-Type:text/html;charset=utf-8 '); //Atom header('Content-type: application/atom+xml'); //CSS

Websphere7.0環境下修改JVM的記憶體設定

方法1:修改配置的方式  通過修改server.xml進行JVM堆大小的設定: servel.xml檔案路徑:/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/22Node01Cell/nodes/Node01/

VMD642開發板CCS3.1中如何在cbd檔案裡修改cmd的記憶體設定

VMD642開發板就是騷啊。燒寫flash真麻煩。碰到簡單的實驗例程沒有DSP/BIOS的改memory直接修改cmd檔案就好了。但是遇到有DSP/BIOS的就不一樣了。不可以簡單地直接在CMD檔案改。 這是一個有DSP/BIOS的例程。 開啟.cbd檔案。system-m

使用matlab的fminunc函式自動設定學習率α

個人部落格文章連結: http://www.huqj.top/article?id=164 應用梯度下降法中最為關鍵的一個步驟就是學習率α的選擇,根據梯度下降的數學原理可知:如果學習率過大,可能導致梯度下降發無法收斂甚至發散,而學習率過小又會導致迭代次數過多,影響學習效率。所以通常我們