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 :

Adapter une application VCL a Vista [FAQ]


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre exp�riment�

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    D�tails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par d�faut Adapter une application VCL a Vista
    Je suis tomb� sur un lien tr�s int�ressant l'autre jour et je souhaite le faire partager.
    Il s'agit des modifications a apporter � une application VCL pour �viter quelques incomodit�s avec Vista. Rien de tr�s m�chant, mais lisez plut�t:

    http://www.installationexcellence.co...phi/Index.html

    Je viens d'appliquer les modifications conseill�es sur mon appli et �a tourne nickel (avec XP car je n'ai pas Vista .

    A vos claviers.

    Yarp
    www.senosoft.com

  2. #2
    Membre �prouv� Avatar de Flow_75
    Femme Profil pro
    Ing�nieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par d�faut
    merci pour ce lien.
    mais les amis non anglophones de ce forum seront sans doute reconnaissant si tu peux faire un petit r�sumer de la manip a faire .
    Merci

  3. #3
    Membre exp�riment�

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    D�tails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par d�faut
    Oui j'avais l'intention de publier mon code. Je me suis int�ress� pour l'instant � la partie comportement de la fen�tre principale jusqu'� l'exemple 3 dans l'article. Le reste de l'article parle des nouvelles fen�tre standards (common dialogs) de Vista.

    Il est dit dans la partie qui nous int�resse que la fen�tre cach�e de BCB la fameuse TApplication joue des tours � nos applications sous Vista car il existe une fonction de previsualisation (des fen�tre r�duites) qui affiche TApplication et non la TForm quand la fen�tre est r�duite.
    Pour corriger �a le truc consiste :
    - � modifier le style de TApplication et de la TForm principales pour que la TForm devienne la fen�tre principale de l'application (TApplication restant bien entendu le parent de l'ensemble)
    - � g�rer soit-m�me la r�duction/restauration de la fen�tre
    - � changer l'impl�mentation du ShowModal pour corriger les effets de bord (car maintenant avec ShowModal les dialogues vont passer sous notre TForm)

    Ce dernier point est le plus emb�tant car il faut enlever toutes les fen�tres construites automatiquement par BCB pour les instancier soit-m�me. Je consid�re perso que ce n'est pas un mal, �a peut m�me soulager notre applicatif mais c'est du travail.

    Le code � pr�sent:
    Modifier le style des fen�tres
    Chaque fen�tre qui apparait dans la Taskbar est concern�e par CreateParams mais typiquement seules la fen�tre principales de votre application est concern�e:
    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
     
    void __fastcall TfrmMain::CreateParams(TCreateParams &Params)
    {
      TForm::CreateParams(Params);    // Vista support
      Params.ExStyle = (Params.ExStyle & ~WS_EX_TOOLWINDOW) | WS_EX_APPWINDOW;
    }
     
    void __fastcall TfrmMain::FormCreate(TObject *Sender)
    {
      // Vista support
      ::ShowWindow(Application->Handle, SW_HIDE);
      ::SetWindowLongPtr(Application->Handle, GWL_EXSTYLE,
          (::GetWindowLongPtr(Application->Handle,GWL_EXSTYLE) & ~WS_EX_APPWINDOW) | WS_EX_TOOLWINDOW);
      ::ShowWindow(Application->Handle, SW_SHOW);
    }
    G�rer le minimize
    Il faut implementer le message WM_SYSCOMMAND avec les �v�nements SW_MINIMIZE et SW_RESTORE. Je suis d�sol� mais je n'ai pas de code standard � vous montrer car je subclass ma message map plut�t que de passer par la message MAP dans le header, voir la doc pour ajouter un message et une message MAP.
    Le code standard est du genre Message.Result = 1. Dans l'exemple le gars met Message.Result := 0, j'ai mis mon code (qui fonctionne avec subclassing) et une impl�mentation non test�e mais copi�e du site de r�ference.
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    Subclassing, message MAP dans le cpp:
    int __fastcall TfrmMain::OnSysCommand(Messages::TMessage &Message)
    {
      // Vista support
      switch(Message.WParam) {
        case SC_MINIMIZE:
          ::ShowWindow(this->Handle, SW_MINIMIZE);
          return 1;
        case SC_MAXIMIZE:
          ::ShowWindow(this->Handle, SW_RESTORE);
          return 1;
      }
      return 0;
    }
     
    Standard BCB, message MAP dans le header:
    void __fastcall TfrmMain::OnSysCommand(Messages::TMessage &Message)
    {
      // Vista support
      switch(Message.WParam) {
        case SC_MINIMIZE:
          ::ShowWindow(this->Handle, SW_MINIMIZE);
          Message.Result = 0;
          break;
        case SC_MAXIMIZE:
          ::ShowWindow(this->Handle, SW_RESTORE);
          Message.Result = 0;
          break;
      }
    }
    Les fen�tre modales
    Pour chaque Appel:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    frmDlgMyModal = new TfrmDlgMyModal(this);
    try {
      frmDlgMyModal.Parent = this;
      frmDlgMyModal.ShowModal();
    }
    __finally {
     delete frmDlgMyModal;
     frmDlgMyModal = NULL;
    }
    Il reste pas mal � exploiter sur l'article, mais je ne g�re pas mes common dialogs avec BCB donc �a limite l'inter�t.
    S'il y a d'autres modifications int�ressantes pour BCB je les posterais n�anmoins ici.

  4. #4
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    Comme vous le savez avec Windows Vista il existe un explorateur de jeux (Game Explorer). Donc ceux qui on fait un jeu en BCB (comme moi ) seront int�ress� d'ajouter leur jeu � cette nouvelle fen�tre. Voici un lien qui vous explique comment faire:
    http://msdn2.microsoft.com/en-us/library/ms687240.aspx

    PS: ne me demander pas de r�sumer, j'ai pas encore tout lus

  5. #5
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    Je viens juste de me rendre compte qu'il existe une traduction du site en fran�ais et elle est sur Developpez.com dans la section Delphi:

    http://olance.developpez.com/article.../delphi-vista/

  6. #6
    Membre exp�riment�

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    D�tails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par d�faut
    Un suivi de ce thread pour dire que si la solution d�crite r�soud effectivement le probl�me de la pr�visualisation dans Vista elle d�clenche aussi un certain nombre d'effets de bord car Windows consid�re toujours malgr� tout TApplication comme �tant le thread principal de l'application.
    - Le chargement de l'icone dans la barre de tache n'est pas imm�diat mais se d�clenche � la fin du FormShow (ce qui est logique) avec une tendance au blocage si le FormShow est long (?).
    - Des fonctions de l'API qui se basent sur GetActiveWindow ne se d�clenchent pas.
    - Restore/Minimize ne fonctionne plus et il faut �galement r��crire cet event (OnSysCommand)

    Par cons�quent je me dit que si c'est juste pour avoir une pr�visualisation le jeux n'en vaut peut-�tre pas la chandelle et qu'il faudrait plut�t chercher � intervenir au niveau de l'affichage de cette pr�visualisation (si c'est possible) que de violer le comportement de Delphi.

    (a suivre)

    yarp
    www.senosoft.com

  7. #7
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    Citation Envoy� par Crayon Voir le message
    Comme vous le savez avec Windows Vista il existe un explorateur de jeux (Game Explorer). Donc ceux qui on fait un jeu en BCB (comme moi ) seront int�ress� d'ajouter leur jeu � cette nouvelle fen�tre. Voici un lien qui vous explique comment faire:
    http://msdn2.microsoft.com/en-us/library/ms687240.aspx

    PS: ne me demander pas de r�sumer, j'ai pas encore tout lus
    Salut, laisser moi revenir un peu en arri�re pour vous dire que j'ai r�ussi a ajouter mon jeu au "game explorer" de Windows Vista. Je cr�� une dll de ressource � partir des fichiers (.rc et .h) g�n�r�s par Game Definition File Editor (qui vient avec le SDK de DirectX). Ensuite, dans mon installateur NSIS j'ai utiliser le script que l'on trouve sur cette page:
    http://nsis.sourceforge.net/Game_explorer

    Pour savoir comment utiliser Game Definition File Editor vous pouvez aller sur le site Web de Microsoft: http://msdn2.microsoft.com/en-us/library/bb173435.aspx

Discussions similaires

  1. Adapter une application Python en application Web
    Par Termirtau dans le forum D�buter
    R�ponses: 3
    Dernier message: 02/03/2015, 22h46
  2. R�ponses: 2
    Dernier message: 14/03/2013, 13h48
  3. Adapter une application android � diff�rentes tailles d'�crans
    Par MarwenSaidi dans le forum Communiqu�s
    R�ponses: 0
    Dernier message: 01/02/2013, 11h30
  4. Adapter une application BlackBerry Bold 9780
    Par Wei_qi dans le forum D�veloppement Mobile en Java
    R�ponses: 0
    Dernier message: 10/12/2011, 13h48
  5. [DEV] Adapter une application Web pour l'iPhone
    Par LeBabouin dans le forum Apple
    R�ponses: 1
    Dernier message: 28/07/2009, 16h49

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