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

SDL Discussion :

Création d'un fenêtre non carré avec SDL


Sujet :

SDL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Création d'un fenêtre non carré avec SDL
    Bonjour,

    j'essaye depuis un moment de réaliser un truc tout simple mais je ne parviens pas à trouver la solution.

    je souhaite en utilisant la bibliothèque SDL et VC++ 2008 pour créer une fenêtre non pas carré comme d'habitude mais de forme personnalisé. J'ai donc pensé en 1er à créer une fenêtre transparente, à utiliser la transparence sur la sdl surface principal seulement cela ne fonctionne pas.

    en cherchant, il se trouve qu'en SDL il est impossible d'utiliser la transparence sur la fenêtre principale.

    Je cherche donc une autre solution, quelqu'un m'a suggéré de faire une capture d'écran du bureau, copier la partie de la capture ou se trouve ma fenêtre , la coller dans ma fenêtre et coller par dessus mon contenu, répéter l'opération à chaque fois que l'utilisateur déplace la fenêtre. L'idée semble intéressante mais c'est quand même une usine à gaz, seulement en cherchant, impossible de trouver quoi que ce soit qui explique comment capturer l'écran entier du bureau windows en excluant notre propre fenêtre en SDL.

    j'ai trouvé des explications pour Win32API mais ce n'est pas SDL et de plus le code fourni en exemple ne compile pas sur vc++ 2008.

    on m'a enfin donné une piste avec SDL_GetWMInfo, j'ai vaguement compris qu'il fallait récupérer le handle de la fenêtre, coder en autre chose que sdl pour y parvenir

    bref à la base je veux créer une fenêtre de forme personnalisé non carré (sans les boutons de windows fermer/réduire/agrandir) genre je fourni une image qui sert de support et donc les parties noires (par exemple) deviennent transparente (et en ayant désactivé la bordure windows) cela donne l'effet d'une fenêtre non carré personnalisée, bien sure dans les parties transparente on doit voir ce qu'il y a sur le bureau de ms windows.

    si quelqu'un a une idée de comment accomplir cette prouesse avec SDL, explications ou éventuellement un bout de codes exemple, merci d'avance

  2. #2
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Bonjour et bienvenue sur developpez


    Le probleme sur lequel tu reflechie a deja été poster, et de memoire, la SDL ne gere pas cela. Toutes les SDL_Surface sont rectangulaire, sans aucune exception, ni meme la fenetre principal ou autre.


    Si tu veux vraiment realiser ceci, tu va devoir toucher à autre chose que la SDL.


    j'essaye depuis un moment de réaliser un truc tout simple mais je ne parviens pas à trouver la solution.
    Rien n'est jamais simple. Ce que tu decouvre, c'est l'envers du decor.

    j'ai trouvé des explications pour Win32API mais ce n'est pas SDL et de plus le code fourni en exemple ne compile pas sur vc++ 2008.
    Si tu le peux, ne te limite pas qu'a vc++. Utilise d'autre IDE, comme code::block que je te recommande chaudement.
    Après, c'est peut etre normal qu'il ne compile pas, il faudrait voir les warning.
    Generalement, ce qu'il m'arrive quant je prend le code de quelqu'un d'autre, c'est que les include ont le mauvais chemin. Je cree un nouveau projet, je copie colle, remat bien les include et ca devrai rouler. regarde bien si tu compile dans le bon langage aussi.


    Bon courage pour coder ceci, tu apprendra plein de chose si tu persiste.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci pour tes conseils.
    je connais code::block et devc++, concernant le code qui compile pas, c'est une source que j'ai téléchargé, c'est du C et y a pas de raison que ça ne compile pas, mais bon je ne maîtrise pas assez pour savoir pourquoi ça ne marche pas. je le met en fichier joint si ça intéresse, ça provenance est indiqué dans le .zip

    sinon me concernant je tiens absolument à utiliser sdl pour faire cette fenêtre, je sais que c'est mort pour la transparence par les mécanismes prévus. mais avec SDL_GetWMInfo ? qu'es qu'il est possible de faire pour atteindre ce but ? j'ai lu la doc, ça se résume à 3 lignes !

  4. #4
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    J'ai regarder le lien que tu m'as passer : cela n'est pas coder avec la SDL mais certainement avec l'API win32.

    De plus, j'ai eu une erreur de type undefined reference : il suffisait de lier libcomctl32.a

    Le probleme est que le programme semble tourner dans le vide. J'approfondirai plus tard.


    Pour SDL_GetWMInfo, je ne m'en suis jamais servi, faudra voir a quoi cela sert et si on pourra l'exploiter.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    oui en effet ce n'est pas du sdl mais c'est le seul truc que j'ai trouvé à ce sujet et concernant SDL_GetWMInfo, quasiment rien ne sort dans google, j'ai regardé sur pas mal de site de tutos, rien non plus, et même trouver le livre "focus on sdl" qui n'aborde pas le sujet.

    sinon dernier recourt, du coté capture d'écran, peut on capturer l'écran du bureau ms windows avec la sdl ? (ça m'a l'air d'être aussi un truc pas prévu)

  6. #6
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Non, la SDL gere uniquement la SDL :

    SDL_SaveBMP (ecran, "captureEcran.bmp");

    aura pour unique effet de faire une capture ecran ... de la fenetre SDL principal.

    Pour faire une capture d'ecran de windows, voir avec windows.h et API win32

  7. #7
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par TheXzod Voir le message
    j'ai trouvé des explications pour Win32API mais ce n'est pas SDL et de plus le code fourni en exemple ne compile pas sur vc++ 2008.
    tu ne peux pas faire des fenêtres "personnalisées" avec SDL;
    c'est uniquement possible en API win 32...et donc pas portable

Discussions similaires

  1. Multiple fenêtre avec SDL
    Par tayri dans le forum SDL
    Réponses: 3
    Dernier message: 23/05/2008, 09h26
  2. Response.Redirect avec Création d'une fentre
    Par jerome.fortias dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/09/2007, 18h05
  3. [Affectation] Méthode des Hongrois avec une matrice non carrée
    Par bmw13fr dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 12/09/2007, 14h38
  4. iconiser 1 fenêtre non développée avec windev
    Par cool dans le forum WinDev
    Réponses: 1
    Dernier message: 17/08/2007, 01h11
  5. Intéraction avec des fenêtres non-Java
    Par dj_lil dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 27/02/2007, 18h50

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