如何解决底边距不起作用在MFC中的专案
我正在使用WindowsCE 2013的C ++ MFC框架
我的目的是准备正确的打印形式。
我初始化了PAGESETUPDLG
结构,并使用以下值对其进行了初始化
不幸的是psd.rtMinMargin.bottom = 500;
的值应为0.5英寸不起作用。
无论在打印输出上设置的值是多少,始终为1英寸。
我无法解释这是什么原因。
BOOL Druk::Configuration()
{
TCHAR DriverName[256];
TCHAR DeviceName[256];
TCHAR OutputName[256];
ZeroMemory(&psd,sizeof(psd));
psd.lStructSize = sizeof(psd); // psd is member of PAGESETUPDLG structure
//psd.hwndOwner = hWnd;
psd.hDevMode = NULL; // Don't forget to free or store hDevMode.
psd.hDevNames = NULL; // Don't forget to free or store hDevNames.
psd.Flags = PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS;
psd.rtMargin.top = 100;
psd.rtMargin.left = 100;
psd.rtMargin.right = 100;
psd.rtMargin.bottom = 500;
psd.rtMinMargin.bottom = 500;
lf_vertic.lfHeight = 30; // is member of LOGFONT structure
lf_vertic.lfWidth = 0;
//lf.lfOrientation = 2700;
lf_vertic.lfEscapement = 0;
lf_vertic.lfUnderline = FALSE;
lf_vertic.lfWeight = FW_BOLD;
lf_horizont.lfHeight = 30;
lf_horizont.lfWidth = 0;
//lf.lfOrientation = 2700;
lf_horizont.lfEscapement = 2700;
lf_horizont.lfUnderline = FALSE;
lf_horizont.lfWeight = FW_BOLD;
hFontVertic = CreateFontIndirect(&lf_vertic);
hFontHorizont = CreateFontIndirect(&lf_horizont);
DWORD error;
if (PageSetupDlg(&psd) == TRUE)
{
memcpy(&dm,(DEVMODE *)(psd.hDevMode),sizeof(DEVMODE));
lstrcpy(DriverName,((TCHAR *)((BYTE *)psd.hDevNames + ((DEVNAMES *)psd.hDevNames)->wDriverOffset)));
lstrcpy(DeviceName,((TCHAR *)((BYTE *)psd.hDevNames + ((DEVNAMES *)psd.hDevNames)->wDeviceOffset)));
lstrcpy(OutputName,((TCHAR *)((BYTE *)psd.hDevNames + ((DEVNAMES *)psd.hDevNames)->wOutputOffset)));
//hDC = CreateDC(DriverName,DeviceName,OutputName,&dm); // Wersja dla WinAPI do usunięcia w wersji finalnej
hDC.CreateDC(DriverName,NULL);
}
error = CommDlgExtendedError();
return TRUE;
解决方法
根据https://docs.microsoft.com/en-us/windows/win32/api/commdlg/ns-commdlg-pagesetupdlga
rtMinMargin
类型:
RECT
左,上,右和下页边距的最小允许宽度。如果未设置
PSD_MINMARGINS
标志,则系统将忽略该成员。
您没有设置PSD_MINMARGINS
标志
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。