Salut,

J'ai une dialogue qui est ouverte et je voudrais empecher le pointeur de sortir de la fenêtre et d'aller sur d'autre fenêtre (ou peut-être simplement désactiver une action sur une autre fenêtre qui ne serait pas au premier plan).

J'ai déjà fais une fonction qui me ramène le curseur à l'intérieur de la fenêtre, il marche mais pas l'extérieur de ma dialog (il ne se passe rien, je perd même le focus)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
RECT rectposition;
POINT pt;
 
void StopCurseur (HWND hwnd)
{
	GetWindowRect(hwnd, &rectposition);
	GetCursorPos(&pt);
	if (pt.x > rectposition.right)
		pt.x = rectposition.right;
	if (pt.x < rectposition.left)
		pt.x = rectposition.left;
	if (pt.y > rectposition.bottom)
		pt.y = rectposition.bottom;
	if (pt.y < rectposition.top)
		pt.y = rectposition.top;
	SetCursorPos(pt.x,pt.y);
	return ;
}
Visiblement, il ne faut pas la mettre dans la DLGPROC. Je suis encore un newbiz mais j'ai cru comprendre que lorque l'évènement dans la zone non-client WM_NCACTIVATE (ou autre WM_NC...) arrivait l'action était envoyé à la fonction gérant les évènements de la fenêtre, et là rien non plus. Ah bah merde alors...

Quelqu'un saurait-il comment qu'on fait cela ?

SeB