• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • VC下打印機的使用

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    楊 凱 VC 5.0是 開發 Windows 95下應用程序的強大工具。本文將通過一個具體實例討論用VC打印文字和圖形的一些技術。在Windows 95下,顯示器和打印機、繪圖儀都被視為輸出設備。系統默認的輸出設備是顯示器。要使用打印機,首先需要創建一個指向打印機的設備環境
    楊 凱

      VC 5.0是開發Windows 95下應用程序的強大工具。本文將通過一個具體實例討論用VC打印文字和圖形的一些技術。在Windows 95下,顯示器和打印機、繪圖儀都被視為輸出設備。系統默認的輸出設備是顯示器。要使用打印機,首先需要創建一個指向打印機的設備環境句柄,然后通過該句柄調用相關的繪圖函數把所需的文字和圖形輸出至打印機上。當打印結束后,刪除這個設備環境句柄即可。


      一、技術細節


      當我們在Windows95下安裝好打印機后,總是需要設置一個為默認打印機,在Windows95的啟動配置文件WIN.INI中[window]段中列出了帶有關鍵字device的默認打印機。如果在文件WIN.INI中有如下幾行:



      [windows]

      [其他程序行]

      device=EPSON LQ-1600K,EPSON24,LPT1:



      在device后的字符串中就包含了系統中默認的打印機的三個重要屬性.它們依次是打印機的設備名是LQ-1600K,驅動程序名是EPSON24,輸出端口為LPT1。在程序中我們可調用API函數GetProfileString從WIN.INI文件中獲得這個設備字符串。再將這個設備字符串進行分解,獲得這三個屬性,作為參數用API函數CreateDC調用。如果調用成功,則為默認打印機創建一個設備環境句柄,否則返回一個空值(NULL)。

      CreateDC函數的原形如下:


      HDC CreateDC(

       LPCTSTR lpszDriver,

       LPCTSTR lpszDevice,

       LPCTSTR lpszOutput,

       CONST DEVMODE *lpinitData

       );


      二、程序代碼及說明


       新建一個名為Test的工程,窗體類型為對話框(Dialog based)模式。在窗體中加入一個按鈕(Button),設置這個Button的屬性:ID=IDC_PRINT,CAPTION="打印"。在類向導中找到該Button的單擊事件對應的消息BN_CLICKED,增加其成員函數OnPrint。在TestDlg.cpp文件中找到OnPrint函數并作如下改動。



       void CTestDlg::OnPrint()

       {

       // 增加如下代碼

       char szprinter[80];

       char *szDevice,*szDriver,*szOutput;

       HDC hdcprint; // 定義一個設備環境句柄



       //定義一個打印作業

       Static DOCINFO di={sizeof(DOCINFO),"printer",NULL};

      

       // 得到設備字符串存入數組szprinter中

       GetProfileString("windows","device",",,,",szprinter,80);



       // 將設備字符串分解

       if(NULL!=(szDevice=strtok(szprinter,","))&&

       NULL!=(szDriver=strtok(NULL,","))&&

       NULL!=(szOutput=strtok(NULL,",")))

       // 創建一個打印機設備句柄

       if((hdcprint=CreateDC(szDriver,szDevice,szOutput,NULL))!=0)

       {

       if(StartDoc(hdcprint,&di)>0) //開始執行一個打印作業

       {

    StartPage(hdcprint); //打印機走紙,開始打印

    SaveDC(hdcprint); //保存打印機設備句柄

    // 輸出一行文字

    TextOut(hdcprint,1,1,"這是一個例子",12);

    // 輸出一條直線

    MoveToEx(hdcprint,20,20,NULL);

    LineTo(hdcprint,120,120);



       RestoreDC(hdcprint,-1); //恢復打印機設備句柄

    EndPage(hdcprint); //打印機停紙,停止打印

    EndDoc(hdcprint); //結束一個打印作業

    MessageBox("打印完畢!","提示",MB_ICONINFORMATION);

    }

       // 用API函數DeleteDC銷毀一個打印機設備句柄

       DeleteDC(hdcprint);

       }

       else

      {

       MessageBox("沒有默認打印機,或者沒有安裝打印機!");

       return;

      }

      }

      編譯運行程序,出現如下窗體:



      在窗體中按下"打印"按鈕,則打印機上會輸出一行字"這是一個例子"。然后再輸出一條直線。在程序中使用了許多API函數,這些函數的具體用法在VC5.0提供的幫助文件中都有詳細的說明,有興趣的讀者不妨看一看。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>