ATTENTION:
Le style CS_OWNDC ne doit pas être utilisé avec CreateWindow(). Il doit être plutôt affecté au membre style de la classe WNDCLASS ou WNDCLASSEX. Il s'agit d'un style de classe de fenêtre et non pas un style de fenêtre.
Une variable locale déclarée en static est allouée dans la mémoire globale de l'exécutable, donc accessible à tout moment. Une fonction CALLBACK appelée de manière répétitive doit limiter l'usage de la pile pour gagner un peu en vitesse. Dans ton code, cela ne poserait aucun problème.
MOGWAI93 -> _hWnd est utilisée un peu de partout (Dans le SetTimer).
OK pour les types pas assez rigoureux.
BruNews -> Bon bon, je vire le bloc. Pour le ReleaseDC, ça dépend si le DC est common, class ou private... Je vais fouiller un peu la question.
RACPP -> 1, 2 OK. Pour le 3, j'ai un peu plus de mal. Cette fonction peut plus ou moins s'appeler récursivement (Avec le SendMessage par exemple...) Donc si c'est statique, il peut y avoir des effets de bords pas cools.
Salut,
L'idée de source est bonne mais il parait que tu n'as pas pris le temps de la finaliser. En plus de ce qui a été dit voici quelques remarques:
1- Le message WM_ERASEBKGND fournit le HDC de la fenêtre dans wParam donc aucun besoin d'utiliser GetDC(). Cette fonction est même appelée inutilement trois fois de suite dans ton code.
2- La fonction OnCreate() est vide.
3- Il est préférable de déclarer les variables locales de WindowProcedure en static. Cela évitera l'usage de la pile à chaque appel de la procédure.
25 mai 2017 à 21:41
21 nov. 2007 à 10:06
20 nov. 2007 à 13:15
20 nov. 2007 à 01:37
Le style CS_OWNDC ne doit pas être utilisé avec CreateWindow(). Il doit être plutôt affecté au membre style de la classe WNDCLASS ou WNDCLASSEX. Il s'agit d'un style de classe de fenêtre et non pas un style de fenêtre.
Une variable locale déclarée en static est allouée dans la mémoire globale de l'exécutable, donc accessible à tout moment. Une fonction CALLBACK appelée de manière répétitive doit limiter l'usage de la pile pour gagner un peu en vitesse. Dans ton code, cela ne poserait aucun problème.
15 nov. 2007 à 10:18
15 nov. 2007 à 10:03
GetWindowLong(?, GWL_STYLE) & CS_OWNDC
Mais je vois pas quoi mettre comme Handle de fenêtre (0 marche pas, et je sais pas si GetDesktopWindow est le bon) :
Donc autant en utiliser un dans le doute : la doc à l'air de dire que faire un ReleaseDC sur un DC privé ne pause pas de problème.
En plus, le ReleaseDC renvoie 1, indiquant que la fonction s'est bien passée.
14 nov. 2007 à 11:11
MOGWAI93 -> _hWnd est utilisée un peu de partout (Dans le SetTimer).
OK pour les types pas assez rigoureux.
BruNews -> Bon bon, je vire le bloc. Pour le ReleaseDC, ça dépend si le DC est common, class ou private... Je vais fouiller un peu la question.
RACPP -> 1, 2 OK. Pour le 3, j'ai un peu plus de mal. Cette fonction peut plus ou moins s'appeler récursivement (Avec le SendMessage par exemple...) Donc si c'est statique, il peut y avoir des effets de bords pas cools.
14 nov. 2007 à 00:55
L'idée de source est bonne mais il parait que tu n'as pas pris le temps de la finaliser. En plus de ce qui a été dit voici quelques remarques:
1- Le message WM_ERASEBKGND fournit le HDC de la fenêtre dans wParam donc aucun besoin d'utiliser GetDC(). Cette fonction est même appelée inutilement trois fois de suite dans ton code.
2- La fonction OnCreate() est vide.
3- Il est préférable de déclarer les variables locales de WindowProcedure en static. Cela évitera l'usage de la pile à chaque appel de la procédure.
13 nov. 2007 à 21:45
13 nov. 2007 à 21:29
(C'est toi, brunews, qui m'avais fais la remarque je crois)
13 nov. 2007 à 19:17
Le bloc 'bon ordre' est aussi inutile que zoli, il faut dans tous les cas 2 shifts ensuite.
Me semble qu'il faut ReleaseDC pour GetDC(0).
13 nov. 2007 à 19:01
alors que _hWnd est égale à hWnd
et pour information, DevCpp (mingW) n'est pas "content" des 2 variables :
HANDLE hDC;
HANDLE _hThisInstance;
il préfère :
HDC hDC;
HINSTANCE _ThisInstance;