Fenetre au premier plan [Résolu]

SnOOpss 571 Messages postés samedi 3 avril 2004Date d'inscription 5 décembre 2013 Dernière intervention - 13 janv. 2006 à 14:26 - Dernière réponse : SnOOpss 571 Messages postés samedi 3 avril 2004Date d'inscription 5 décembre 2013 Dernière intervention
- 14 janv. 2006 à 10:46
Bonjour suite a mon probleme de capture d'ecran on resolu (cf
http://www.cppfrance.com/forum.v2.aspx?ID=631298) j'ai essayé de
prendre mon probleme autrement et j'en suis la.



case WM_WINDOWPOSCHANGED:{

LPWINDOWPOS lpwp;

lpwp=(LPWINDOWPOS)lParam;

if (lpwp->hwndInsertAfter!=NULL)) {

result = CallWindowProc(dlg->testold,hwnd,uMsg,wParam,lParam);

HDC hdc = GetWindowDC(dlg->hwnd);

dlg->tmp=NULL;


SetWindowRgn(dlg->hwnd,NULL,TRUE); // je remet a zero vu que
justement j'ai eu mon bug inexpliqué.

DessinDialog( *dlg ,hdc);

dlg->tmp=CaptureScreen(hdc,dlg->largeur,dlg->longueur);

if (dlg->tmp) {

HRGN rgn = BmpToRgn(dlg->tmp,RGB(0,0,0));

SetWindowRgn(dlg->hwnd,rgn,TRUE);

DeleteObject(rgn);

}

return result;

}

}

break;



Mais ceci ne marche QUE si la fenetre ne s'affiche pas au premier plan.

Donc j'ai laissé




dlg->tmp=NULL;

DessinDialog( *dlg ,hdc);





dlg->tmp=CaptureScreen(hdc,dlg->largeur,dlg->longueur);



if (dlg->tmp) {


HRGN rgn =
BmpToRgn(dlg->tmp,RGB(0,0,0));



SetWindowRgn(dlg->hwnd,rgn,TRUE);

DeleteObject(rgn);

}



au debut de mon prog.

En fait je cherche le moyen de savoir si oui ou non une fenetre est au premier plan

IsVisible() m'affiche toujour true (meme si on voit rien) et je ne trouve pas le handle que me renvoi GetTopWindow().



Pareil pour
lpwp->hwndInsertAfter je met
lpwp->hwndInsertAfter!=NULL
car quand ce n'est pas les flags qu'il me renvoi, il me renvoi un HWND
que je ne trouve pas (ni celle de ma fenetre, ni celle ne l'appli
affichant cette fenetre).



En terme de performance mon bricolage ne vaut rien car les fonction
sont exécutées 2 a 4 fois minimum alors qu'une seule fois est
suffisante (et celles ci sont tres lourde dessindialog(),
BmpToRgn() et CaptureScreen())
.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 13 janv. 2006 à 19:14
3
Merci
Reagarde WM_ACTIVATEAPP et WM_ACTIVATE.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++

Merci BruNews 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de BruNews
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 13 janv. 2006 à 14:35
0
Merci
GetForegroundWindow() ne te conviendrait pas ?

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Commenter la réponse de BruNews
SnOOpss 571 Messages postés samedi 3 avril 2004Date d'inscription 5 décembre 2013 Dernière intervention - 13 janv. 2006 à 16:37
0
Merci
Si si ,c'etait exactement ca qu'il me manquait dans la premier partie nickel merci.

Maintenant si les fenetre sont au premier plan tout marche en une seule fois.

Si une seule fenetre est crée ca marche aussi nickel.

Si 2 fentres sont créées en arriere plan au moment ou je remet l'application au premier plan une des deux fenetre deconne.

En fait ma partie avec WM_WINDOWPOSCHANGED s'execute
pour le premiere fenetre alors qu'elle n'est pas visible au moment de
la creation de la deuxieme fenetre en arriere plan (donc je me retrouve
avec la mauvaise capture d'ecran).



Quelqu'un connaitrait un moyen sur d'etre prevenu lorsqu'une fenetre passe au premier plan ?? Je galere comme un fou avec
WM_WINDOWPOSCHANGED, la je suis en tran de me battre avec GetNextWindow()
pour essayer de comprendre lpwp->hwndInsertAfter!!
Commenter la réponse de SnOOpss
SnOOpss 571 Messages postés samedi 3 avril 2004Date d'inscription 5 décembre 2013 Dernière intervention - 14 janv. 2006 à 10:46
0
Merci
Nickel merci en plus vu qu'elle sont activées a tout de role des que je
met l'application "parente" en premier plan je devrais pouvoir me
demerder pour eviter quelle se chevauche l'une l'autre.

Reponse courte, rapide et c'est toujours le truc tout con qu'on
cherche, si les hotlines pouvaient etre comme vous ce serait le paradis
Commenter la réponse de SnOOpss

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.