本主题描述显示“页面设置”对话框的示例代码,以便用户可以选择打印页面的属性,例如纸张类型,纸张来源,页面方向和页面边距。示例代码首先初始化PAGESETUPDLG结构,然后调用PageSetupDlg函数显示对话框。
此示例在旗成员中设置PSD_MARGINS标志,并使用rtMargin成员指定初始边距值。它设置PSD_INTHOUSANDTHSOFINCHES标志,以确保对话框表示千分之一英寸的边距尺寸。
在输入时,示例代码将hDevMode和hDevNames成员设置为NULL。如果函数返回TRUE,该函数将使用这些成员将句柄返回到DEVMODE和DEVNAMES结构,其中包含用户的输入和有关打印机的信息。您可以使用此信息来准备要发送到所选打印机的输出。
该示例还使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;
}