【问题标题】:Bottom margins doesn't work. Project in MFC底部边距不起作用。 MFC 中的项目
【发布时间】:2021-01-22 07:08:57
【问题描述】:

我正在使用适用于 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, DeviceName, OutputName, NULL);
    }
    error = CommDlgExtendedError();
    return TRUE;

【问题讨论】:

    标签: c++ printing mfc windows-ce


    【解决方案1】:

    根据https://docs.microsoft.com/en-us/windows/win32/api/commdlg/ns-commdlg-pagesetupdlga

    rtMinMargin

    输入:RECT

    左、上、右和下边距的最小允许宽度。如果未设置PSD_MINMARGINS 标志,系统将忽略此成员。

    而你没有设置 PSD_MINMARGINS 标志

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 2015-12-02
      • 2023-03-04
      • 2012-09-12
      相关资源
      最近更新 更多