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

C++Builder Discussion :

Ecrire sur le Bureau


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 33
    Points
    33
    Par défaut Ecrire sur le Bureau
    Bonjour,
    je voudrais écrire sur le bureau (windows xp).
    J'y arrive (GetWindowDC(Bureau) ...TextOut(Dessin, 10, 180, st, lstrlen(st)) mais mon texte disparait, lors d'un raffraichissement du bureau je pense.
    Merci.

  2. #2
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    tu as une solution ici.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 33
    Points
    33
    Par défaut Ecrire sur le Bureau
    Merci mais ça ne résout pas mon probléme. j'ai bien fait un essai avec GetDC(0) et c'est exactement pareil, ça disparait avec un raffraichissement.
    Je ne veux pas d'une appli supplémentaire qui tourne en permanence, je voudrais écrire sur le papier-peint une seule et définitive fois.

  4. #4
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    dafdan a ecrit:
    Merci mais ça ne résout pas mon probléme. j'ai bien fait un essai avec GetDC(0) et c'est exactement pareil, ça disparait avec un raffraichissement.
    Je ne veux pas d'une appli supplémentaire qui tourne en permanence, je voudrais écrire sur le papier-peint une seule et définitive fois.
    Pourquoi pas un fond d'ecran personnalise, c'est une image, on peut donc la reprendre sous un logiciel de dessin, et la modifier a son gré, c'est definitif et sans programme qui tourne en permanence.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 33
    Points
    33
    Par défaut Ecrire sur le Bureau
    Bonjour,
    c'est exactement ce que je veux mais le fond change à chaque démarrage et l'inscripton que je voudrais faire dessus n'est bien sur jamais la meme.
    En conclusion ? comment écrire sur le papier-peint avant de l'afficher ?

  6. #6
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Comme l'as dit mon collègue, il faut que tu charges le papier peint dans ton application, que tu la modifies et que tu la réassignes en tant que papier peint.

  7. #7
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Voilà un petit bout de code qui fait en deux temps ce que tu veux.
    Dans un premier temps, je charge l'image du papier peint du bureau dans un Timage:
    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
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {   //SPI_GETDESKWALLPAPER
     
        char path[200];
        if(SystemParametersInfo(  SPI_GETDESKWALLPAPER,
                                  200,
                                  path,
                                  0) == TRUE)
        {
            AnsiString Chemin;
            float i=0;
     
            Image1->Picture->LoadFromFile(path);
            i = (float)Screen->Height/(float)Screen->Width;
            Image1->Height = i * Image1->Width;
        }
    }
    en fait je récupère son chemin.

    Ensuite, je charge une image et je la modifie par le Canvas avant de l'établir comme papier peint du bureau:
    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
     
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {  //SPI_SETDESKWALLPAPER
       if(OpenDialog1->Execute())
       {
           Image1->Picture->LoadFromFile(OpenDialog1->FileName);
           Image1->Canvas->TextOutA(10,10,"modif de l'image par Builder");
           Image1->Picture->SaveToFile(OpenDialog1->FileName);
     
           if(SystemParametersInfo( SPI_SETDESKWALLPAPER,
                                    OpenDialog1->FileName.Length(),
                                    OpenDialog1->FileName.c_str(),
                                    0) != TRUE)
           {
               Button2->Caption = "Erreur";
           }
       }
    }
    Perso, je tient à garder mon papier peint nikel, c'est pour ca que je ne l'ai pas modifié directement.

    Mais tu peux faire tout ca en une fois, et charger l'image du papier peint, la modifier et l'enregistrer avant de la recharger en tant que papier peint.

    Voilà, il ne manque plus que le petit résolu

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 33
    Points
    33
    Par défaut Ecrire sur le Bureau
    Et merci.

  9. #9
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Petite modification, dans la dernière commande, pour enregistrer la modif, il faut faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(SystemParametersInfo( SPI_SETDESKWALLPAPER,
                                    OpenDialog1->FileName.Length(),
                                    OpenDialog1->FileName.c_str(),
                                    WM_SETTINGCHANGE) != TRUE)
    Cela change juste le zéro du dernier paramètre. Je pense que si tu redémarres le PC, maintenant le fond d'écran sera sauvé, sinon tu appliques le changement mais ne le sauvegarde pas.

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

Discussions similaires

  1. Comment ecrire sur la meme ligne avec la commane ECHO
    Par juflata dans le forum Windows
    Réponses: 3
    Dernier message: 24/11/2015, 09h06
  2. Ecrire directement sur le bureau (OSD)
    Par Takis dans le forum Débuter
    Réponses: 10
    Dernier message: 17/07/2009, 11h07
  3. application sur le bureau
    Par SQUAL dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 14/06/2004, 17h18
  4. ecrire sur un dbgrid ??
    Par nil dans le forum Bases de données
    Réponses: 8
    Dernier message: 21/04/2004, 22h40
  5. Raccourci sur le bureau
    Par senateur dans le forum Langage
    Réponses: 7
    Dernier message: 05/09/2002, 15h17

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