Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4767 connectés 

 


Dernière réponse
Sujet : [VC++] Comment faire pour simuler un OnScreenDisplay ?
Graffin

oliv5 a écrit a écrit :

Bon, je crois que je t'ai pas tout expliqué.
Dans le petit effet marrant dont je t'ai filé le code, il y a tout ce dont tu as besoin.
 
Si tu l'as testé il a dû répondre a ta question sur le rafraichissement .......
 
En gros, je t'ai filé la solution pour écrire a l'écran pardessus tout le reste, c'est pas ce que tu veux non ?
 
Si tu lance le prog, tu t'apercevra qu'il ne tient pas au rafraichissement, cad que si tu déplace une fenetre apres ca, l'effet disparaitra.
 
Je crois que c'est ce que tu veux. Enfin, peut etre que je me trompe :)




 
c vrai... :)
 
mais en feintant l'ennemi, ca marche pas trop mal :jap:


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Graffin

oliv5 a écrit a écrit :

Bon, je crois que je t'ai pas tout expliqué.
Dans le petit effet marrant dont je t'ai filé le code, il y a tout ce dont tu as besoin.
 
Si tu l'as testé il a dû répondre a ta question sur le rafraichissement .......
 
En gros, je t'ai filé la solution pour écrire a l'écran pardessus tout le reste, c'est pas ce que tu veux non ?
 
Si tu lance le prog, tu t'apercevra qu'il ne tient pas au rafraichissement, cad que si tu déplace une fenetre apres ca, l'effet disparaitra.
 
Je crois que c'est ce que tu veux. Enfin, peut etre que je me trompe :)




 
c vrai... :)
 
mais en feintant l'ennemi, ca marche pas trop mal :jap:

Graffin voila voila
 
c fait .. et ca marche :)
 
en prenant un parti du code d'Oliv5 ( :jap: ), divers tests et experimentations, qq heures de travail sur les timers et autre InvalidateRect() bien placés ( :D), ca marche pas trop mal...  
 
et ca donne un plugin Winamp qui affiche à l'écran le morceau en cours dans la playlist pdt 5 secondes [:fifiz]
 
reste plus que des pb esthétiques genre choix de la fonts, couleurs, positions, durée, effets (parceque Arial en 145 c'est pas top :D )
 
en tout cas merci à tous ...
oliv5 Bon, je crois que je t'ai pas tout expliqué.
Dans le petit effet marrant dont je t'ai filé le code, il y a tout ce dont tu as besoin.
 
Si tu l'as testé il a dû répondre a ta question sur le rafraichissement .......
 
En gros, je t'ai filé la solution pour écrire a l'écran pardessus tout le reste, c'est pas ce que tu veux non ?
 
Si tu lance le prog, tu t'apercevra qu'il ne tient pas au rafraichissement, cad que si tu déplace une fenetre apres ca, l'effet disparaitra.  
 
Je crois que c'est ce que tu veux. Enfin, peut etre que je me trompe :)
Carbon_14 Etant plutôt expérimentateur, je dis : pourquoi ne pas essayer ? Si le simple fonctionne.
 
A savoir si le texte restera affiché et effacé qu'au prochain REDRAW du fond d'écran, ou restera "collé".
 
Dans mes maladresses des débuts (elles durent encore :pt1cable:) j'ai réussi une fois à faire déborder le texte de ma feuille volante et écrire sur le fond (je sais plus comment).
 
Y a peut-être moyen aussi de fixer la couleur du texte, avant ?
 
Si le texte reste "collé", ca va être plus compliqué (j'ai vu un exemple qq part (pr Win 3.11) pour afficher en "volant" la position du curseur pas loin de lui-même, faudrait que je le retrouve sur un des mes HD, on fait une combinaison logique avec PatBlt() entre le fond et ce qu'on veut écrire. Ca fait pro)
Graffin UP :)
Graffin oui c vrai aussi :)
 
en supposant que je capte le DC du bureau (GetDeskTopWindow()), un TextOut sur ce fameux DC ferait-il l'affaire ? (mais ca me parait bien "simple" :/ )
 
myDC = GetDC(GetDeskTopWindow()));
SetBkMode(myDC, TRANSPARENT);  
 
BeginPath(myDC);  
 
TCHAR truc[] = "- OSD -";  
TextOut(myDC, 0, 0, texte, ARRAYSIZE(truc));
 
EndPath(myDC);  
 
 
un truc comme ca :??:
TotalRecall Et comme sur tous les écrans vendus depuis qques années d'ailleurs. Désolé moi je peux pas t'aider. Mais à mon avis c'est autant une histoire de design que de prog.
Graffin ok merci c bien sympa comme effet ....  
 
mais c pas tout à fait ca que je voulais :)
 
non en fait, si on prend l'exemple des claviers multimedia (Logitech par exemple) et des softs qui les accompagnent, ben si on augmente ou baisse le volume, une barre verte préfixée par "Volume", et representant ce fameux volume, apparait en "surimpression" sur l'écran.. comme sur une télé quoi ;)
 
c'est cet effet que je voudrais ..
 
des idées ?
oliv5 Un exemple vaut mieux qu'un long discours.
Voila donc un exemple en win32 :
 
HDC hdcScr, hdcMem;
    int cx, cy, x1, y1, x2, y2;
    HWND hwndScreen;
       
    if (LockWindowUpdate(hwndScreen = GetDesktopWindow()))
    {
     hdcScr  = GetDCEx (hwndScreen, NULL, DCX_CACHE | DCX_LOCKWINDOWUPDATE);
     hdcMem  = CreateCompatibleDC (hdcScr);
     cx      = GetSystemMetrics(SM_CXSCREEN) / 10;
     cy      = GetSystemMetrics(SM_CYSCREEN) / 10;
     srand ((int)GetCurrentTime());    
     for (int i=0;i<300;i++)
     {
      x1 = cx * (rand () % 10) ;
      y1 = cy * (rand () % 10) ;
      x2 = cx * (rand () % 10) ;
      y2 = cy * (rand () % 10) ;
      BitBlt(hdcMem,  0,  0, cx, cy, hdcScr, x1, y1, SRCCOPY) ;
      BitBlt(hdcScr, x1, y1, cx, cy, hdcScr, x2, y2, SRCCOPY) ;
      BitBlt(hdcScr, x2, y2, cx, cy, hdcMem,  0,  0, SRCCOPY) ;
     }
     DeleteDC(hdcMem);
     ReleaseDC(hwndScreen, hdcScr);
     //LockWindowUpdate(NULL);
    }
 
c'est un truc marrant : il découpe ton écran en carrés et les échange de place. ca te fait un damier a l'écran.
voila.
Graffin Personne ne sait ? :(
Graffin Salut
 
Sur les TVs actuelles (ou meme les scopes), ya un OSD, càd un affichage de l'action en cours (Volume, numéro de chaine, etc...).
 
Comment faire pour simuler ca sur le un ecran windows ?
En creant une fenetre transparente ? (ca a pas l'air top)
En captant le DC du Bureau et en utilisant un TextOut ? (oui dakor mais comment faire ?)
 
Merci pour vos idées et conseils :)
 
NB : je débute ;)

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)