- C / C++ / C++.NET : Dialogboxindirect avec des controles (win32) - CodeS SourceS
- [win32] classe de controle de winsock mode multithread
- C / C++ / C++.NET : Win32activex : conteneur de contrôles activex en win32 (api com ole) - Co
- C / C++ / C++.NET : Controle vu-metre (win32) - CodeS SourceS
- C / C++ / C++.NET : Controle de volume osd (win32) - CodeS SourceS
10 juin 2006 à 14:28
10 juin 2006 à 10:54
Or le premier param est aligné sur un WORD, mais pas forcément un DWORD
Si tu me demandes ce que signifie aligné sur un DWORD, ca veut juste dire que l'adresse est un mutliple de la taille d'un DWORD, soit 4
Donc, si (lpw & 3) est différent de 0, ca veut dire que c'est pas un multiple de 4 (les multiples de 4 on leur deux bits de poids faible à 0). Dans ce cas je l'incrémente (ce qui ajoute en fait deux au pointeur, qui est maintenant aligné sur un DWORD).
10 juin 2006 à 09:31
if((LPARAM)lpw & 3) lpw++; // Aligner sur un DWORD
A quoi cella sert-il (et ne me dit pas a aligner sur un DWORD mdr :) ).
7 juin 2006 à 16:29
7 juin 2006 à 16:20
Pour modifier la police de tous les controles enfants, une simple petite boucle do while() suffit. J'ai utilisé cette astuce dans mes dernières sources déposées sur le site. Mais ta solution doit être meilleure car plus rapide.
C'est vrai que CreateWindow() travaille en pixels. Je contourne le problème dans une DialogBox en récupérant le clientrect(qui est en pixels) de la boite de dialogue et positionner les controles dans ce rectangle.
A propos de GetDlgItem(), si on utilise beaucoup les HWNDs, on peut les récupérer une seule fois pendant WM_INITDALOG. La boite s'affiche un peu moins vite mais c'est mieux que CreateWindow().
10/10