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 :

fixer une fen�tre


Sujet :

C++Builder

  1. #1
    Membre �m�rite
    Inscrit en
    Juin 2005
    Messages
    644
    D�tails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par d�faut fixer une fen�tre
    probl�me probablement trivial pour un po :
    je dois rendre la form principale ainsi que celle des fen�tre enfants d'une application
    innamovible dans l'�cran.
    comment doit-on proceder?
    compilateur : Borland C++ 6.
    Merci de vos r�ponses!

  2. #2
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Mettre BorderStyle de la Form a bsNone, mais ca fait peut etre plus que ce que tu veut

  3. #3
    Membre r�gulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    9
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 9
    Par d�faut
    Que voulez-vous dire exactement par inamovible? qu'on ne peut d�placer ? qu'on ne peut fermer ? ou qui doit rester au dessus des autres fen�tres?

  4. #4
    Membre �m�rite
    Inscrit en
    Juin 2005
    Messages
    644
    D�tails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par d�faut
    Merci de cette r�ponse! mais cela n'est pas la solution...
    Bien sur BsNone fair disparaitre la barre qui n'appartient pas � l'application et qui est responsable de ma question mais:
    je doit faire une applic qui sera child d'un syst�me nettement plus vate et pour des questions d'homog�n�it� de pr�sentation, cette barre "du haut" doit rester pr�sente.
    J'y ai juste supprim� tous les icones minimize, maximize, Exit, ...
    pour ce faire a l'event oncreate j'execute :


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
       TBorderIcons tempBI = BorderIcons;
       tempBI >> biMaximize;
       tempBI >> biMinimize;
       tempBI >> biHelp;
       tempBI >> biSystemMenu;
       BorderIcons             =       tempBI;
    Je cherche donc � rendre innamovible des fen�tre poss�dant cette header qui est sous le controle de window et non de l'application

  5. #5
    Membre �m�rite
    Inscrit en
    Juin 2005
    Messages
    644
    D�tails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par d�faut
    Par innamovible j'entends qu'elle ne puisse �tre d�plac�e par l'utilisateur.
    Les autres aspects de la question sont r�solus par le petit code que j'ai cit� pr�alablement

  6. #6
    Membre r�gulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    9
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 9
    Par d�faut
    Je comprends un peu mieux.
    Je n'ai pas test� ces solutions, mais ce sont peut-�tre des pistes:
    1) utiliser les propri�t�s Position poDefaultPosOnly et poDefaultSizeOnly de TForm.
    2) (hack-o-rama) dans OnShow, enregistrer Left, Top, Height and Width; dans OnResize, restaurer ces valeurs. A voir si il n'y a pas un message windows que l'on pourrait attraper lrsque la fen�tre est d�plac�e.

  7. #7
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut
    Bonsoir,

    Eventuellement, une id�e afin de 'bloquer' l'acc�s aux zones non clientes de la TForm, afin d'�viter de la d�placer m�me si la barre de titre est visible :
    . dans le .h de la TForm, en private:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    private:	// Déclarations de l'utilisateur
    		void __fastcall OnNCLBUTTONDOWN(TMessage& msg);//bouton gauche enfoncé, dans la zone non client
     
            BEGIN_MESSAGE_MAP
    				MESSAGE_HANDLER(WM_NCLBUTTONDOWN,TMessage,OnNCLBUTTONDOWN)
    		END_MESSAGE_MAP(TForm)
    . dans le .cpp:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    void __fastcall TForm2::OnNCLBUTTONDOWN(TMessage& msg)
    {
    	msg.Msg = WM_NCLBUTTONUP;
    }
    On ne peut donc plus 'saisir' la fen�tre par la barre de titre et la d�placer ...

    En esp�rant t'aider,
    @ +

    Suite :

    Par contre, dans mon cas, on ne peut plus cliquer sur les boutons de la barre de titre (mais j'ai cru comprendre que dans ton cas, il n'y en avait pas).

    Sinon, on peut toujours imaginer rester sur cette id�e et tester le param�tre wParam du message, qui est le 'hit-test':
    voir alors aussi WM_NCHITTEST peut �tre, pour selectionner les cas ou l'on peut cliquer sur la zone non cliente ou non.

    non ?

  8. #8
    Membre �m�rite
    Inscrit en
    Juin 2005
    Messages
    644
    D�tails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par d�faut
    M E R C I !!!

    Cela rempli en tout cas 95% de mon attente!

  9. #9
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut
    Bonsoir,

    Mais alors .... c'est quoi les 5 % restant ?


  10. #10
    Membre �m�rite
    Inscrit en
    Juin 2005
    Messages
    644
    D�tails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par d�faut
    avec la macro dans la zone private, il n'est pas � priori ais� de pouvoir switcher cette option de ON � OFF � travers le soft lui-m�me. Mais cela reste marginal pour mon application.
    J'ai essay� - mais sans r�sultat positif - de changer
    msg.Msg = WM_NCLBUTTONUP; par msg.Msg = WM_NCLBUTTONDOWN; suivant les conditions d'appels. J'aurrais pens� que l'interception de l'event WM_NCLBUTTONUP; et le substituer � lui-m�me aurait rendu la mobilit� � la fen�tre : mais non...
    Mais je n'ai pas r�fl�chi plus que cela et je ne pourrais pas m'avancer trop sur ses conclusions.
    en tout cas encore MERCI

  11. #11
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut
    Bonsoir,

    Content d'avoir pu t'aider ...

    Et avec une variable bool (en private, dans la TForm), initialis�e a false au lancement de la form, qui passerais a true en fonction des cas ?
    On �crirais alors :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void __fastcall TForm2::OnNCLBUTTONDOWN(TMessage& msg)
    {
    if (Libre == true)
    {
    	msg.Msg = WM_NCLBUTTONUP;
    }
    else
    {
    	this->DefaultHandler(&msg);
    }
    }
    On peut imaginer capter le message WM_NCMOUSEMOVE (de la m�me mani�re que pour WM_NCLBUTTONDOWN), et faire changer la valeur de la variable bool�enne en fonction de la zone survol�e (par exemple) si besoin.
    A moins que je me trompe gravement, cette �v�nement sera capter de toute fa�on avant le click dans la zone non cliente.

    @ +

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Fixer une fen�tre hwnd en avant-plan
    Par frankytactik dans le forum Macros et VBA Excel
    R�ponses: 0
    Dernier message: 18/02/2013, 12h30
  2. R�ponses: 0
    Dernier message: 16/02/2011, 11h52
  3. Fixer une fen�tre dans l'�cran
    Par thibane dans le forum GTK+ avec C & C++
    R�ponses: 12
    Dernier message: 08/06/2007, 17h25
  4. fixer la taille d'une fen�tre
    Par hammag dans le forum AWT/Swing
    R�ponses: 1
    Dernier message: 25/04/2006, 18h33
  5. Fixer la taille d'une fen�tre
    Par rockelite dans le forum AWT/Swing
    R�ponses: 1
    Dernier message: 24/12/2005, 13h09

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