Allocation de ressources GDI
Cet article explique comment allouer et libérer les objets GDI (Graphics Device Interface) Windows pour l'impression.
Remarque
Pour plus d’informations, consultez la documentation du Kit de développement logiciel (SDK) GDI+.
Supposons que vous avez besoin d'utiliser des polices, des stylets ou d'autres objets GDI pour l'impression, mais pas pour l'affichage à l'écran. Compte tenu de la mémoire qu'ils demandent, il n'est pas judicieux d'allouer ces objets au démarrage de l'application. Quand l'application n'imprime pas un document, cette mémoire peut être utile à d'autres tâches. Il est préférable de les allouer au début de l'impression, puis de les supprimer à la fin.
Pour allouer ces objets GDI, remplacez la fonction membre OnBeginPrinting . Cette fonction convient parfaitement à cet objectif pour deux raisons : l’infrastructure appelle cette fonction une fois au début de chaque travail d’impression et, contrairement à OnPreparePrinting, cette fonction a accès à l’objet CDC représentant le pilote de périphérique d’imprimante. Vous pouvez stocker ces objets à utiliser pendant le travail d’impression en définissant des variables membres dans votre classe d’affichage qui pointent vers des objets GDI (par exemple, CFont *
des membres, etc.).
Pour utiliser les objets GDI que vous avez créés, sélectionnez-les dans le contexte de l’appareil d’imprimante dans la fonction membre OnPrint . Si vous avez besoin de différents objets GDI pour différentes pages du document, vous pouvez examiner le m_nCurPage
membre de la structure CPrintInfo et sélectionner l’objet GDI en conséquence. Si vous avez besoin d'un objet GDI pour plusieurs pages consécutives, Windows vous impose de le sélectionner dans le contexte du périphérique à chaque appel de OnPrint
.
Pour libérer ces objets GDI, remplacez la fonction membre OnEndPrinting . L'infrastructure appelle cette fonction à la fin de chaque travail d'impression, ce qui vous donne la possibilité de libérer les objets GDI propres à l'impression avant que l'application revienne à d'autres tâches.