Это связано с тем, что два ваших CD C (память и принтер) были помещены в разные режимы отображения .
Например, когда CD * Контекст основного устройства 1022 * находится в режиме MM_TEXT
, тогда положительное значение y
равно внизу , тогда как в (большинстве) других режимах положительное значение 'y' увеличивается. Быстрый тест на моей собственной системе (хотя и с использованием экранного CD C) показал, что CDC::DrawText()
возвращает положительное значение, когда D C находится в режиме MM_TEXT
, но отрицательное значение для (например) MM_ISOTROPIC
или MM_HIMETRIC
.
Независимо от того, изменили ли вы явно режим отображения для любого из ваших CDC, я не знаю! Но, даже если вы этого не сделали, инфраструктура MF C, вероятно, "что-то сделала" с контекстом устройства принтера - либо до того, как вы его получили, либо (что более вероятно) в функции OnPreparePrinting
.