Bonjour,
Voila, je bosse sur le developpement d'un ensemble de classes pouvant definir une interface graphique.
Une sorte de MFC, mais en plus simple.
Je souhaite pouvoir dessiner (à l'aide des fonctions BitBlt et compagnie) à l'intérieur d'un HBITMAP.
J'ai fait quelques tests en utilisant des HDC pour dessiner dessus, et je me pose quelques questions sur l'utilisation des HDC...
1er question :
-------------
Combien de DC peut-on creer en meme temps ?
Vu que j'utilise des "conteneurs" et des "composants", les conteneurs créent un HBITMAP correspondant à leur taille et fournira un HDC sur ce bitmap à ses composants afin que ceux-ci se dessinent dessus.
Ainsi, pour dessiner le conteneur à l'ecran il suffit de dessiner son HBITMAP
En gros, la procedure ressemble à ça :
- Le conteneur obtient un HDC sur son bitmap
- Il appelle la fonction dessine(HDC) de tous ses composants avec le HDC en parametre
- le conteneur release son HDC
Vu que ce sont des composants imbriqués les uns dans les autres, on peut avoir cela :
- Le conteneur 1 se dessine, il crée un HBITMAP et fournit un HDC dessus
- Le conteneur 1 contient un conteneur 2, qui crée son DC
- Le conteneur 2 contient un conteneur 3, qui crée son DC
....
Le niveau d'imbriquation devrait pas etre extrement elevé, à moins de s'amuser à ne créer que des conteneurs...
A la fin du dessin du conteneur 1, tous les DC sont supprimés, mais 3 ont co-existé durant la procedure....
Cela pose-t-il un probleme ? J'ai souvenir d'une doc windows qui parlait d'un maximum de 5 HDC par application, mais je n'arrive pas à remettre la main dessus...
2eme question :
---------------
Si je crée une bitmap en memoire de 200x300px.
Que je crée un DC dessus pour dessiner dedans.
Que se passe-t-il si j'essaie de dessiner "en-dehors" de l'image ?
Le clipping est-il automatique sur la surface de la bitmap, ou faut-il declarer quelquechose ?
Merci !
Partager