IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Une fenêtre "sans contour", avec des contrôles


Sujet :

Windows

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Une fenêtre "sans contour", avec des contrôles
    Bonjour à tous,

    Je suis un peu "nouveau" dans la programmation Windows, bien que j'ai déjà réalisé quelques applis.

    J'essaye de créer une application qui se dessine à partir d'une image qui possède un masque de transparence.
    Ca c'est ok, via la création en mode WS_EX_LAYERED, et les fonctions blend associés à un UpdateLayeredWindows.

    Par contre ensuite, j'aimerais ajouter par dessus, sur une zone non transparente, une zone d'édition de texte (ou, pour parle de manière plus générale, un contrôle).

    Et là, impossible ... j'ai TOUT essayé .. rien trouvé sur Google ... je suis en slip :/

    Quelqu'un a déjà fait ça ?

    Merci pour votre aide !
    V.

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Je ne vois même pas où est le problème. Poste ton projet si tu peux.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Je suis parti des sources de ce projet ci : http://www.dhpoware.com/demos/layeredWindows.html

    Impossible d'y ajouter un contrôle sur la zone non transparente ... Je veux bien la solution si tu l'as

  4. #4
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Ok je vais voir ça ce soir. A+.

  5. #5
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Ah, la fenêtre est dessinée dès le UpdateLayeredWindow. Je n'ai jamais fait ça, mais en me renseignant un peu, j'ai appris que ça ne permet pas d'avoir des contrôles visibles. Je te propose cette méthode :

    - Prépare une image avec un fond rose, car le rose est rarement utilisé dans le reste de ta fenêtre ...
    - Crée un layered Window comme si tu devais créer une fenêtre normale, sauf que le style WS_EX_LAYERED devra être spécifiée.
    - Dans WM_CREATE, appelle SetLayeredWindowAttributes (ou UpdateLayeredWindow) en spécifiant rose comme couleur de transparence (argument "color key").
    - A chaque WM_PAINT, dessine ta fenêtre (autrement dit affiche ton bitmap) : toute la partie rose deviendra invisible.
    - Il fallait aussi spécifier WS_CLIPCHILDREN dans la création de la fenêtre principale pour ne pas écraser les contrôles avec le bitmap lors des WM_PAINT.

    Poste ton projet si tu as toujours des problèmes.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci, ça m'a bien guidé !

    Pour clore ce sujet, je rajoute une petite précision :
    Ta méthode ne fonctionne pas avec UpdateLayeredWindow, car cette l'appel à cette fonction masque tous les messages WM_PAINT. Par contre, avec SetLayeredWindowAttributes, les messages WM_PAINT sont bien traités, et donc ça fonctionne.

    Un lien intéressant à ce sujet : http://alexkr.com/source-code/50/lay...layeredwindow/

    Encore merci.

  7. #7
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par Toufinet Voir le message
    Ta méthode ne fonctionne pas avec UpdateLayeredWindow, car cette l'appel à cette fonction masque tous les messages WM_PAINT.
    Je n'ai pas trouvé cette info sur MSDN, mais si tu le dis . Et le lien que tu as trouvé est excellent. A+.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/09/2007, 13h54
  2. Trouver un la handle d'une fenêtre cachée sans FindWindow()
    Par Jean-Philippe Shields dans le forum Windows
    Réponses: 3
    Dernier message: 24/02/2006, 12h08
  3. Réponses: 5
    Dernier message: 06/07/2005, 14h51
  4. Réponses: 1
    Dernier message: 11/04/2005, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo