PrinterProperties呼叫

DEVCAPS2的「Device」功能表中上還有一個稱為「Properties」的選項。要使用這個選項,首先得從 Device 功能表中選擇一個印表機,然後再選擇 Properties ,這時彈出一個對話方塊。對話方塊從何而來呢?它由印表機驅動程式呼叫,而且至少還讓使用者選擇紙的尺寸。大多數印表機驅動也可以讓使用者在「直印(portrait)」或「橫印(landscape)」模式中進行選擇。在直印模式(一般為內定模式)下,紙的短邊是頂部。在橫印模式下,紙的長邊是頂部。如果改變該模式,則所作的改變將在DEVCAPS2程式從GetDeviceCaps函式取得的資訊中反應出來:水平尺寸和解析度將與垂直尺寸和解析度交換。彩色繪圖機的「Properties」對話方塊內容十分廣泛,它們要求使用者輸入安裝在繪圖機上之畫筆的顏色和使用之繪圖紙(或透明膠片)的型號。

DEVCAPS2的「Device」功能表中上還有一個稱為「Properties」的選項。要使用這個選項,首先得從 Device 功能表中選擇一個印表機,然後再選擇 Properties ,這時彈出一個對話方塊。對話方塊從何而來呢?它由印表機驅動程式呼叫,而且至少還讓使用者選擇紙的尺寸。大多數印表機驅動也可以讓使用者在「直印(portrait)」或「橫印(landscape)」模式中進行選擇。在直印模式(一般為內定模式)下,紙的短邊是頂部。在橫印模式下,紙的長邊是頂部。如果改變該模式,則所作的改變將在DEVCAPS2程式從GetDeviceCaps函式取得的資訊中反應出來:水平尺寸和解析度將與垂直尺寸和解析度交換。彩色繪圖機的「Properties」對話方塊內容十分廣泛,它們要求使用者輸入安裝在繪圖機上之畫筆的顏色和使用之繪圖紙(或透明膠片)的型號。
所有印表機驅動程式都包含一個稱為ExtDeviceMode的輸出函式,它呼叫對話方塊並儲存使用者輸入的資訊。有些印表機驅動程式也將這些資訊儲存在系統登錄的自己擁有的部分中,有些則不然。那些儲存資訊的印表機驅動程式在下次執行Windows時將存取該資訊。
允許使用者選擇印表機的Windows程式通常只呼叫PrintDlg(本章後面我會展示用法)。這個有用的函式在準備列印時負責和使用者之間所有的通訊工作,並負責處理使用者要求的所有改變。當使用者單擊「Properties」按鈕時,PrintDlg還會啟動屬性表格對話方塊。
程式還可以通過直接呼叫印表機驅動程式的ExtDeviceMode或ExtDeveModePropSheet函式,來顯示印表機的屬性對話方塊,然而,我不鼓勵您這樣做。像DEVCAPS2那樣,透過呼叫PrinterProperties來啟動對話方塊會好得多。
PrinterProperties要求印表機物件的代號,您可以通過OpenPrinter函式來得到。當使用者取消屬性表格對話方塊時,PrinterProperties傳回,然後使用者通過呼叫ClosePrinter,釋放印表機代號。DEVCAPS2就是這樣做到這一點的。
程式首先取得剛剛在Device功能表中選擇的印表機名稱,並將其存入一個名為szDevice的字元陣列中。
GetMenuString ( hMenu, nCurrentDevice, szDevice,
sizeof (szDevice) / sizeof (TCHAR), MF_BYCOMMAND) ;
然後,使用OpenPrinter獲得該設備的代號。如果呼叫成功,那么程式接著呼叫PrinterProperties啟動對話方塊,然後呼叫ClosePrinter釋放設備代號:
if (OpenPrinter (szDevice, &hPrint, NULL))
{
PrinterProperties (hwnd, hPrint) ;
ClosePrinter (hPrint) ;
}

相關詞條

相關搜尋

熱門詞條

聯絡我們