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

Visual C++ Discussion :

[API][WIN32] Deux Toolbar à la fois


Sujet :

Visual C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Par d�faut [API][WIN32] Deux Toolbar à la fois
    Bonsoir � tous,
    j'�cris une application en C++ avec l'aide des API WIN32 et je rencontre un probl�me avec une toolbar.
    Une premi�re toolbar s'affiche correctement mais la deuxi�me s'affiche par dessus la premi�re alors que je m'attends � ce qu'elle s'affiche en dessous de la premi�re.
    Mon bout de code est le suivant:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // création barre d'outils
    HWND hWndToolBar_1 = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | TBSTYLE_TOOLTIPS,0, 0, 0, 0, hWnd, 0,hInst, NULL);
     
    // ajout style TBSTYLE_FLAT
    DWORD dwStyle = GetWindowLong(hWndToolBar_1, GWL_STYLE);
    SetWindowLong(hWndToolBar_1, GWL_STYLE, dwStyle | TBSTYLE_FLAT);
     
    ... association des boutons........etc.... puis affichage:
    SendMessage(hWndToolBar_1, TB_AUTOSIZE, 0, 0);
    ShowWindow(hWndToolBar_1, SW_SHOW);
    ...
    Je fais alors la m�me chose avec HWND hWndToolBar_2... ...
    pour la deuxi�me toolbar

    Y-a-t-il un style � rajouter pour permettre l'affichage de la deuxi�me toolbar, Comment d�finir les positions ?
    Avec les MFC il existe la possibilit� de faire cela en utilisant un style, comment faire avec les API.

    Ca doit forcement �tre simple ce truc l� !! impossible de trouver des renseignements sur internet.

    Merci d'avance pour votre aide ou votre point de vue !
    Nicolah

    Merci de penser aux balises de code / nico-pyright(c)

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    48
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 48
    Par d�faut
    Bonjour,

    Lorsque tu fais appel � la fonction, il y a deux param�tres qui te permettent de modifier la position de ta barre d'outils. Ce sont les param�tres x et y.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    HWND CreateWindow(      
     
        LPCTSTR lpClassName,
        LPCTSTR lpWindowName,
        DWORD dwStyle,
        int x,
        int y,
        int nWidth,
        int nHeight,
        HWND hWndParent,
        HMENU hMenu,
        HINSTANCE hInstance,
        LPVOID lpParam
    );
    As-tu essay� de modifier ces param�tres lorsque tu appelles cette fonction ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Par d�faut Repositionnement
    Bonsoir,
    tout d'abord merci pour ta r�ponse cedekasme;
    j'ai essay� dans tous les sens mais cela ne fonctionne pas: Aucun effet visible.
    Par contre, je peux afficher deux barre d'outil en sp�cifiant qu'une s'affiche en haut et l'autre en bas. Pour celle d'en bas, il faudrait g�rer le resizing du framewindow car sinon elle se ballade au milieu de la fen�tre lors d'un redimensionnement: L� de nouveau j'ai un probl�me de position...

    Je pense que cela pourrait marcher avec des toolbar dockable.
    Je vais chercher dans cette voie mais si vous avez d'autres id�es ou r�sultats de tests, c'est bienvenu,
    d'avance merci !!

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Par d�faut R�sultat d'un test
    Bonjour � tous,
    voici un test que j'ai fait pour r�soudre le probl�me des deux barres d'outils en API WIN32:
    J'ai cr�� une application toute simple MFC qui comprend deux barres d'outils s�par�es et dockable (deux fois la m�me barre d'outils que le wizard � mis en place). La fonction GetWindowLong je r�cup�re les style GWL_STYLE et GWL_EXSTYLE: 0 pour EXSTYLE et 1409288270 pour STYLE.
    J'utilise donc ces deux valeurs pour ma propre cr�ation de toolbar via API avec la fonction SetWindowLong(m_hWndToolBar, GWL_STYLE, 1409288270) et je v�rifie bien s�r par dwStyle = GetWindowLong(m_hWndToolBar, GWL_STYLE); que la valeur dwStyle retourn�e est bien celle que je voulais fixer !

    voici le code MFC:

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    //Création 1ere toolbar
    if (!m_wndToolBar_1.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    !m_wndToolBar_1.LoadToolBar(IDR_MAINFRAME))
    	{
    		TRACE0("Failed to create toolbar 1\n");
    		return -1;      // fail to create
    	}
     
    //Création ème toolbar
    if (!m_wndToolBar_2.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    !m_wndToolBar_2.LoadToolBar(IDR_MAINFRAME))
    	{
    		TRACE0("Failed to create toolbar 2\n");
    		return -1;      // fail to create
    	}
     
    // dockable 1
    m_wndToolBar_1.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockControlBar(&m_wndToolBar_1);
    // dockable 2
    m_wndToolBar_2.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockControlBar(&m_wndToolBar_2);
     
    // récuparation des 2 style GWL_STYLE et GWL_EXSTYLE
    HWND TBwnd = m_wndToolBar_2.m_hWnd;
    LONG TBlong_ex = GetWindowLong(TBwnd,GWL_EXSTYLE);
    LONG TBlong = GetWindowLong(TBwnd,GWL_STYLE);
    ....
    ....
     
    Et voici le code API:
    HWND InitToolBar(HWND hWnd, HINSTANCE hInst, int Index)
    {
    // création barre d'outils
    HWND m_hWndToolBar;
    if (Index==1) { m_hWndToolBar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD ,0 , 0, 0, 0, hWnd, 0,hInst, NULL); }
     if (Index==2) { m_hWndToolBar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD ,0 ,0 ,0 , 0, hWnd, 0,hInst, NULL); }
     
    if(!m_hWndToolBar) return FALSE;
     
    // ajout style TBSTYLE_FLAT (Pb quand fait lors de la création)
    DWORD dwStyle = GetWindowLong(m_hWndToolBar, GWL_STYLE);
    SetWindowLong(m_hWndToolBar, GWL_STYLE, 1409288270);
    SetWindowLong(m_hWndToolBar, GWL_EXSTYLE, 0);
    ....
    ....
    et au miracle, cela ne marche pas !
    En API, m�me avec les m�mes style qu'en MFC, les deux barres d'outils sont superpos�es...

    Pour ma part, j'arr�te l� les investigations, j'ai d�j� perdu assez de temps � essayer de trouver comment faire un truc qui devrait � mon sens �tre ultra simple...
    Microsoft a des progr�s � faire pour rendre lisible ses API.
    Nicolah

  5. #5
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut, le positionnement de deux barres d'outils en MFC:
    post it faq:
    http://www.developpez.net/forums/sho...68#post1146468


Discussions similaires

  1. [D�butant]Quelques questions de principe sur l'API win32
    Par silver_dragoon dans le forum Windows
    R�ponses: 4
    Dernier message: 19/03/2004, 18h38
  2. [API WIN32] Pb avec SHGetSpecialFolderLocation
    Par Invit� dans le forum MFC
    R�ponses: 3
    Dernier message: 27/01/2004, 21h19
  3. [API Win32] WriteFile()
    Par tut dans le forum MFC
    R�ponses: 2
    Dernier message: 27/01/2004, 16h13
  4. API Win32
    Par benoit70 dans le forum MFC
    R�ponses: 8
    Dernier message: 26/01/2004, 19h11
  5. [API win32] R�cup�rer le r�pertoire d'un profile
    Par sbeu dans le forum API, COM et SDKs
    R�ponses: 3
    Dernier message: 27/09/2002, 12h38

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