Богат контрол за редактиране: разлика между rcPage и rc членове на структурата FORMATRANGE

Win32 богат контрол за редактиране има съобщение, наречено EM_FORMATRANGE , който може да рендира съдържанието на контролата в произволен контекст на устройство. Това често се използва за печат или визуализация на печат, но може да се използва с всеки контекст на устройство. Това съобщение приема структура, наречена FORMATRANGE , което се дефинира по следния начин:

typedef struct _formatrange {
  HDC       hdc;
  HDC       hdcTarget;
  RECT      rc;
  RECT      rcPage;
  CHARRANGE chrg;
} FORMATRANGE;

Единствената документация за rc и rcPage е следната:

rc: Областта за изобразяване. Единиците се измерват в туипове.

rcPage: Цялата област на страница на устройството за изобразяване. Единиците се измерват в туипове.

Стойностите за rc и rcPage могат да бъдат получени с помощта на GetDeviceCaps.

Не ми е напълно ясно каква е разликата между rcPage и rc. Примерите за код, които съм виждал онлайн, изглежда задават и двете на един и същи правоъгълник. Собствен пример на Microsoft Как да отпечатате Съдържанието на контролите за обогатено редактиране напълно не успява да инициализира rcPage и всъщност предава недефинирани данни към контролата за обогатено редактиране.

Използва ли се rcPage дори от контролата за богато редактиране? Не виждам защо втори правоъгълник може да е полезен за повлияване на поведението на тази команда, така че за какво е там? Може ли някой да даде пример, илюстриращ разликата между rc и rcPage?


person James Johnston    schedule 21.06.2012    source източник
comment
Предполагам, че е като window rect срещу client rect.   -  person chris    schedule 21.06.2012


Отговори (1)


Примерът, към който сте се свързали, всъщност задава частта rcPage на максималните размери на принтера, напр. точно това, което се казва в документацията, докато rc е настроен на действителните секции за печат на страницата, които не са еднакви, обикновено принтерите имат граница около страницата, където не могат физически да отпечатат. Причината да има две вероятно е, когато нещо е абсолютно позиционирано на страницата, но вие изобразявате само частично част от него, така че се нуждае от тази информация, за да измести правилно елементите.

person Karl Edwall    schedule 23.10.2012