c - Hvad er den bedre metode til at gennemføre tegning i min ansøgning med tredjeparts plugins?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har oprettet appen, og alle de plugins, der er skrevet til det, skal trække på specielt sted på min form, som vil være tilfældigt eller specielt udvalgt til plugin, så hver gang koordinaterne er tilfældige. De skal også bruge standard windows GDI funktioner som Rectangle (), FillRect (), TextOutA () og andre.
Hvad er den bedre metode til at opnå dette? Jeg ved, at jeg skal lave tegne-motor inde i mit program, jeg har 2 valg: at bruge navngivne rør eller til at bruge Windows-meddelelser. Måske har nogen andre metoder implementeret og testet?

Bedste reference


For at kunne bruge GDI-funktioner har de brug for adgang til et HDC håndtag. Hvis din app opstiller en TPanel eller en anden egnet vinduesbeholder til tegning, kan den passere beholderens HWND håndtag til plugin'et, og plugin'et kan hente HDC manuelt via GetDC() eller GetWindowDC() når det er nødvendigt. Hvis du vælger at videregive den faktiske HDC til plugin'et i stedet, kan du sætte en TPaintBox eller anden egnet ikke-vinduet beholder til side i stedet , som ikke kræver en dedikeret HWND og tilhørende ressourcer.