设置打印页面

【勇芳软件工作室】汉化HomePreviousNext

本主题描述显示“页面设置”对话框的示例代码,以便用户可以选择打印页面的属性,例如纸张类型,纸张来源,页面方向和页面边距。示例代码首先初始化PAGESETUPDLG结构,然后调用PageSetupDlg函数显示对话框。

此示例在成员中设置PSD_MARGINS标志,并使用rtMargin成员指定初始边距值。它设置PSD_INTHOUSANDTHSOFINCHES标志,以确保对话框表示千分之一英寸的边距尺寸。

在输入时,示例代码将hDevModehDevNames成员设置为NULL。如果函数返回TRUE,该函数将使用这些成员将句柄返回到DEVMODEDEVNAMES结构,其中包含用户的输入和有关打印机的信息。您可以使用此信息来准备要发送到所选打印机的输出。

该示例还使PagePaintHook钩子过程自定义样本页面内容的绘图。

PAGESETUPDLG psd; //常见的对话框结构
HWND hwnd; //所有者窗口

//初始化PAGESETUPDLG
ZeroMemory(&psd, sizeof(PAGESETUPDLG));

psd.lStructSize = sizeof(PAGESETUPDLG);
psd.hwndOwner = hwnd;
psd.hDevMode = NULL; //不要忘记释放或存储hDevMode。
psd.hDevNames = NULL; //不要忘记自由或存储
hDevNames.
psd.Flags = PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS |
PSD_ENABLEPAGEPAINTHOOK;
psd.rtMargin.top = 1000;
psd.rtMargin.left = 1250;
psd.rtMargin.right = 1250;
psd.rtMargin.bottom = 1000;
psd.lpfnPagePaintHook = PaintHook;

if (PageSetupDlg(&psd)==TRUE) {
//这里检查纸张尺寸和边距值
}

以下示例显示了示例页面区域中绘制边距矩形的示例PagePaintHook钩子过程:

BOOL CALLBACK PaintHook(HWND hwndDlg, UINT uMsg, WPARAM wParam,

LPARAM lParam)

{

LPRECT lprc;

COLORREF crMargRect;

HDC hdc, hdcOld;

开关(uMsg){

//绘制边距矩形。

case WM_PSD_MARGINRECT:

hdc = (HDC) wParam;

lprc = (LPRECT) lParam;

//获取系统高亮颜色。

crMargRect = GetSysColor(COLOR_HIGHLIGHT);

//创建系统突出显示颜色的虚线笔

//将其选择到示例页面的DC中。

hdcOld = SelectObject(hdc, CreatePen(PS_DASHDOT, .5,

crMargRect));

//绘制边距矩形。

Rectangle(hdc,lprc- > left,lprc- > top,lprc- >对,

lprc->bottom);

//将上一个笔恢复到DC。

SelectObject(hdc, hdcOld);

return TRUE;

默认:

return FALSE;

}

return TRUE;

}