trafounet
Messages postés37Date d'inscriptionsamedi 20 novembre 2004StatutMembreDernière intervention20 décembre 2006
-
20 juil. 2006 à 19:59
trafounet
Messages postés37Date d'inscriptionsamedi 20 novembre 2004StatutMembreDernière intervention20 décembre 2006
-
20 juil. 2006 à 20:37
Bonjour,
je veux faire en sorte qu'un controle soit créé en cliquant avec la souris puis que la taille de celui ci soit determiné en glissant la souris puis en relachant le bouton, voila ce que j'ai fait:
static bool CreatingControl=false;
static int PosX=0, PosY=0;
static int SizeX=0, SizeY=0;
case WM_MOUSEMOVE:
if(CreatingControl)
{
SizeX=(LOWORD(lParam)-PosX);
SizeY=(HIWORD(lParam)-PosY);
SetWindowPos(NewControl,0,PosX,PosY,SizeX,SizeY,0);
}
break;
...
ca marche, mais malheuresement le redimmensionnement du controle n'est pas fluide du tout, le bouton ne suit pas le deplacement de la souris pour peu qu'on la deplace un peu trop vite
donc voila j'aimerai savoir si quelqu'un à un autre moyen pour que le redimmensionnement du control soit plus fluide
merci d'avance
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 20 juil. 2006 à 20:22
Salut,
Pour un redimensionnement fluide, il est préférable de ne créer le controle qu'après relachement du bouton de la souris. Pendant le redimensionnement, un simple rectangle de pointillés suffit pour montrer les dimensions et la position du contrle. C'est la solution utilisé par Windows et tous les éditeurs de ressources.
case WM_LBUTTONDOWN:
CreatingControl=true;
PosX=LOWORD(lParam);
PosY=HIWORD(lParam);
// Début dessin du rectangle avec SetPixel() par exemple.
break;
case WM_MOUSEMOVE:
if(CreatingControl)
{
SizeX=(LOWORD(lParam)-PosX);
SizeY=(HIWORD(lParam)-PosY);
//Redimmensionnement du rectangle (avec SetPixel)
}
break;
case WM_LBUTTONUP:
CreatingControl=false;
NewControl=CreateWindow,.......
break;
Pour la technique du rectangle avec SetPixel(), tu peux regarder ce code source:
Impimeur d'images BMP