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

API, COM et SDKs Delphi Discussion :

Changer les icônes de la barre de titre et/ou de la Taskbar en cours d'exéution


Sujet :

API, COM et SDKs Delphi

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 369
    Billets dans le blog
    1
    Par défaut Changer les icônes de la barre de titre et/ou de la Taskbar en cours d'exéution
    Je développe une vaste DLL de soutien à un langage externe, en Delphi 6 Personal Edition.

    Dans ce contexte, je veux créer une fonction qui me permette de changer dynamiquement l'icône de la barre de titre de la form principale et/ou de changer l'icône qui s'affiche dans la barre des tâches (TaskBar). Pour cela, je tente d'utiliser l'API SendMessage avec le handle de la form principale et avec le code message WM_SETICON et le paramètre ICON_SMALL ou ICON_BIG.

    Problème:
    Mais, quelque soit le code utiisé, c'est toujours l'icône de la barre de titre de la fenêtre principale qui est changée (correctement), mais jamais celle de la barre des tâches.

    Pour opérer le changement d'icône, je charge une bitmap carrée de dimensions quelconque dans le presse-papier, dans le programme appelant (écrit dans un autre langage). Puis j'appelle une fonction dans ma DLL écrite en Delphi 6 PE pour effectuer le changement. Je procède comme suit:
    - vérification que le presse-papier contient bien une image
    - je récupère les dimensions de mon système pour petites ou grandes icônes par GetSystemMetrics (chez moi, ce sont 16x16 et 32x32)
    - chargement de cette image dans une bitmap temporaire
    - en fonction du code demandé (ICON_SMALL ou ICON_BIG) je crée une icône temporaire avec les dimensions adéquates
    - j'utilise SendMessage pour affecter l'icône temporaire
    - finalement, je libère les ressources remporaires

    Ai-je commis une erreur de logique ?
    Ai-je mal utilisé SendMessage ?

    Je joins un fichier ZIP contenant l'ensemble des sources, un fichier bitmap utilisé pour les tests et les EXE générés. Ce ZIP contient un projet pour la DLL avec l'extrait nécessaire limité à la fonctioin concernée, et un projet de programme en Delphi appelant ette fonction. Ce programme est une simulation du programme du langage externe utilisant normalement la DLL, mais du coup, tout est en Delphi 6 PE et met le problème en evidence.

    Merci d'avance pour votre aide !

    P.S. Je précise que je suis sous Windows 10 toutes mises à jour faites.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [Graphique] Changer l'aspect de la barre de titre
    Par pofet dans le forum Windows Forms
    Réponses: 6
    Dernier message: 14/06/2007, 10h06
  2. Réponses: 4
    Dernier message: 03/06/2007, 07h18
  3. Ajouter une icônes dans la barre de titre
    Par fraric dans le forum Windows Forms
    Réponses: 8
    Dernier message: 11/02/2007, 21h22
  4. [JTree] Changer les icônes
    Par Spoutnik dans le forum Composants
    Réponses: 4
    Dernier message: 12/09/2005, 08h54
  5. Icône dans la barre de titre
    Par Sephi dans le forum MFC
    Réponses: 7
    Dernier message: 28/10/2003, 17h58

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