Yazdırma özellik sayfasını kullanarak

[Bu ön belgeleme ve değiştirmek için bir konu değildir.]

Bir kullanıcı bir belge yazdırma seçeneklerini seçebilir böylece yazdırma özellik sayfasını görüntüler örnek kod açıklanmıştır. Örnek kod önce ayırır ve bir PRINTDLGEX yapısı başlatır, sonra özellik sayfasını görüntülemek için PrintDlgEx işlevini çağırır.

Örnek kod, PRINTDLG yapısını bayrakları üyesi için pd_returndc bayrağını ayarlar. Bu aygıt içerik tanıtıcısı hDC üyesi seçilen yazıcının PrintDlgEx işlevinin neden olur. Tanıtıcı fonksiyonları gibi kullanabileceğiniz yazıcıya gönderilen çıktı işleyen DrawText.

Giriş örnek kod hDevMode ve hDevNames üye null olarak ayarlar. İşlev s_ok döndürür, bu üyelerin tanıtıcıları dönmek devmode ve devnames yapıları kullanıcı girişi içeren ve yazıcı hakkında bilgi. Çıkış seçili yazıcıya gönderilmek üzere hazırlamak için bu bilgileri kullanabilirsiniz.

Yazdırma işlemi tamamlandıktan sonra örnek kodu devmode ve devnames tamponlar ve çağrıları boşaltır DeleteDC işlevi aygıt içeriğini silmek için.

Hresult DisplayPrintPropertySheet)
    hwnd hWnd / / pencere, özellik sayfasının sahibi
)
{
hresult hResult;
LPPRINTDLGEX pPDX = null;
LPPRINTPAGERANGE pPageRanges = null;

/ / PRINTDLGEX yapısı.

pPDX (LPPRINTDLGEX) GlobalAlloc (gptr, sizeof(PRINTDLGEX)); =
Eğer (! pPDX)
    e_outofmemory dönmek;

/ / PRINTPAGERANGE yapıları dizisi ayrılamadı.

pPageRanges (LPPRINTPAGERANGE) GlobalAlloc = (gptr, 10 * sizeof(PRINTPAGERANGE));
Eğer (! pPageRanges)
    e_outofmemory dönmek;

/ / PRINTDLGEX yapısı başlatılamıyor.

pPDX-gt; lStructSize sizeof(PRINTDLGEX); =
pPDX - > hwndOwner hWnd; =
pPDX - > hDevMode = null;
pPDX - > hDevNames = null;
pPDX - > hDC = null;
pPDX - > bayrak = pd_returndc | PD_COLLATE;
pPDX - > Flags2 = 0;
pPDX - > ExclusionFlags = 0;
pPDX - > nPageRanges = 0;
pPDX - > nMaxPageRanges = 10;
pPDX - > lpPageRanges = pPageRanges;
pPDX - > nMinPage = 1;
pPDX - > nMaxPage = 1000;
pPDX - > nCopies = 1;
pPDX - > HINSTANCE = 0;
pPDX - > lpPrintTemplateName = null;
pPDX - > lpCallback = null;
pPDX - > nPropertyPages = 0;
pPDX - > lphPropertyPages = null;
pPDX - > nStartPage = start_page_general;
pPDX - > dwResultAction = 0;

/ / Yazdırma özellik sayfasını çağırmak.

hResult PrintDlgEx(pPDX); =

If ((hResult s_ok ==) & &
           pPDX - > dwResultAction == PD_RESULT_PRINT) {}

/ / Kullanıcı tıklattığınız Yazdır düğmesi, yani
    / / dc ve diğer bilgileri iade / / PRINTDLGEX yapı belgeyi yazdırmak için

}

Eğer (pPDX - > hDC! = null) DeleteDC (pPDX - > hDC);
Eğer (pPDX - > hDevMode! = null) GlobalFree (pPDX - > hDevMode); 
Eğer (pPDX - > hDevNames! = null) GlobalFree (pPDX - > hDevNames); 

hResult dönmek;
} 

Index