次の方法で、一部のプリンター プロパティ (つまり、ページ サイズ) を 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
):
dmSize
0であることに注意してください。
TPrinterSetupDialog コンポーネントを使用してプリンタのページ サイズを変更しようとしましたが、値は変わりませんdmPaperSize
。
私はどこかで一歩を踏み外したことがありますか?
これは XE4 c++ ビルダー VCL プロジェクトです。