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

Bibliothèques C++ Discussion :

Afficher la fenetre du bureau sur Windows Mobile


Sujet :

Bibliothèques C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 30
    Points : 17
    Points
    17
    Par défaut Afficher la fenetre du bureau sur Windows Mobile
    Bonjour,

    Je développe une application dans laquelle je souhaite à un moment (lorsque j'appui sur un bouton) faire passer la fenetre du bureau au dessus de celle de mon programme. Pour cela, il me semble que j'utilise le bon code, a savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void MaDialog::OnBnClickedButton1()
    {
        BOOL bRes = ::SetForegroundWindow(::GetDesktopWindow());
    }
    Le résultat de ce code est trés bizarre --> cela fait apparaitre la barre haute du bureau, mais le contenu principal de la fenetre reste celui de mon application.
    Si à ce moment je clic au centre de l'écran, cela réactive entierement la fenetre de mon programme (la barre du haut + le contenu de la fenetre).

    Auriez-vous des pistes à mon problème ?

    PS: si je me suis mal expliqué, dites le moi !!!

    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Vous avez dû confondre quelques concepts.

    Le bureau, c'est la fenêtre au fond de l'écran.
    Les fenêtres sous Windows forment une arborescence.
    Les fenêtres filles d'une fenêtre sont toujours affichées au dessus de la fenêtre mère et les coordonnées XY des fenêtres filles sont relatives aux coordonnées de la fenêtre mère. Ainsi, quand on déplace la fenêtre mère, toutes les fenêtres filles suivent le déplacement.

    Donc à la question, comment mettre une fenêtre sous le bureau, je pense qu'il y a une explication plus détaillée à donner.
    C'est pour cacher la fenêtre ?
    C'est pour que la fenêtre passe en arrière plan ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Je suis d'accord avec vous sur le principe, mais cela est vrai pour du développement PC car sous Windows mobile une fenètre prend tout l'écran et n'est pas déplaçable.

    Mon but est bien de cacher la fenetre (ou de la mettre en arrière plan, ce qui reviens au même pour moi), mais si j'utilise la méthode classique :
    celle ci n'est plus visible à l'utilisateur, elle n'apparait plus dans la liste des fenetres en cours (alors qu'elle existe effectivement toujours). Si j'execute ce code, la seule facon de faire réapparaitre la fenètre est d'utiliser à nouveau du code, alors que je souhaite que ce soit l'utilisateur qui fasse l'action de faire réapparaitre la fenetre.

    Il se peut que vous ne connaissiez pas la programmation sur windows mobile, mais le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ::SetForegroundWindow(::GetDesktopWindow());
    est un code que l'on peut retrouver facilement sur internet et il est sensé fonctionner (enfin j'espère !!)

    Pour preuve, j'ai créé un nouveau projet en C# pour tester ce code et il fonctionne parfaitement. à titre indicatif, voici mon code en C#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Importation des fonctions de la librarie
    [DllImport("coredll.dll")]
    public static extern IntPtr GetDesktopWindow()
    [DllImport("coredll.dll")]
    public static extern Boolean SetForegroundWindow(IntPtr hWnd)
     
    // Utilisation des fonctions
    private void button1_Click(object sender, EventArgs e)
    {
        Boolean bRes = SetForeGroundWindow(GetDesktopWindow());
    }
    Pour information, la méthode SetForegroundWindow retoure VRAI que ce soit dans le code C++ ou dans le code C#


    Ce que je comprend pas, c'est pourquoi l'execution du même code (situé dans coredll.dll) a des effets différents !!

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ::ShowWindow(hwnd, SW_MINIMIZE);

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    SW_MINIMIZE n'existe pas en Windows mobile !

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Oups, Je viens de m'apercevoir que lorsque que je lance ma solution qui comporte plusieurs projets un des projets n'est pas déploié ... et du coup ça viens certainement de là.

    Je fais les tests et je vous tiens au courant si le probleme viens de là !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Désolé de vous avoir dérangé pour ça, mais c'était un faux probleme, ma solution était en fait mal déploiée !!!

    Merci quand même pour votre aide

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/05/2006, 21h26

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