1

次の方法で、一部のプリンター プロパティ (つまり、ページ サイズ) を ini ファイルに保存しようとしています。

    Printer()->PrinterIndex = Printer()->PrinterIndex;    

    wchar_t printerDevice[256], printerDriver[256], printerPort[256];
    THandle printerDeviceModeHandle = 0;
    DEVMODE *printerDeviceMode;

    Printer()->GetPrinter(printerDevice, printerDriver, printerPort, printerDeviceModeHandle);

    if (printerDeviceModeHandle != 0)
    {

        DEVMODE *printerDeviceMode = (DEVMODE *) GlobalLock((void *)printerDeviceModeHandle);

        if ((printerDeviceMode != NULL) && (printerDeviceMode->dmFields & DM_PAPERSIZE))                
            ini->WriteInteger("PrintingPage", "PaperSize", printerDeviceMode->dmPaperSize);

        GlobalUnlock((void *)printerDeviceModeHandle);
    }

printerDeviceModeコードは内側のifステートメント内に入りますが、変数を調べるdmDeviceNameと正しいように見えます。他の設定の多くはガベージのようです (を含むdmPaperSize):

printerDeviceMode のデバッグ インスペクター ウィンドウの画像

dmSize0であることに注意してください。

TPrinterSetupDialog コンポーネントを使用してプリンタのページ サイズを変更しようとしましたが、値は変わりませんdmPaperSize

私はどこかで一歩を踏み外したことがありますか?

これは XE4 c++ ビルダー VCL プロジェクトです。

4

0 に答える 0