2012-06-30 91 views
1

我工作的一個項目,我需要從設備打印操作編程。 它有WIN CE 6.0。我正在使用Visual Studio 2005(MFC)。 打印機可以是任何兼容PCL的打印機。閱讀DEVMODE結構從註冊表

目前,獲得打印機DC,我使用的CreateDC()。

hPrinterDC = CreateDC(L"PCL.DLL", L"Any Name", L"LPT1", NULL); 

使用此調用我可以成功打印。 在這裏,我將DEVMODE特定的輸入參數作爲NULL傳遞。但爲了更好地控制這些打印操作,我需要將DEVMODE信息傳遞給CreateDC()。

對於我計劃作出的CreateDC()的調用上面指定生成註冊表DEVMODE的具體信息。然後,我可以將此DEVMODE數據從註冊表讀取到本地變量中,僅修改此變量的必需字段,並將此變量傳遞給CreateDC()以獲取打印機DC,以便進行實際的打印操作。

我避免DEVMODE結構的直接初始化,因爲我沒有關於DEVMODE例如某些領域的足夠信息dmDriverExtra。

我需要知道我怎麼能放心地讀到這樣從註冊表DEVMODE一個結構?任何相關的例子都會非常有用。

親切的問候, 阿夫塔卜

+0

任何直接的DEVMODE初始化相關信息也可以有很大的幫助。我對dmDriverExtra字段(以及DEVMODE後面的驅動程序特定數據,如果需要)特別感興趣。 – Aftab

回答

0

這是古老的,但以防萬一有人認爲這仍然是有用的。

的DEVMODE包含私人和公共區域,所以用大小等於sizeof(DEVMODE)分配會排除一些設置。初始化DEVMODE的正確方法是使用DocumentProperties()函數查詢其默認狀態。它返回最後一個參數設置爲零時所需的字節數。