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 Discussion :

Wim32 API - Tabcontrol sur programme fenêtre


Sujet :

Bibliothèques

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2017
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Wim32 API - Tabcontrol sur programme fenêtre
    Bonjour à tous,

    me voilà dans un certain embarras depuis quelques jours/semaines. J'ai du reprendre un programme existant (fonctionnant sur console), et ajouter une fenêtre via Win32 API, procédure relativement délicate quand on est habitué à Qt!

    Me voici donc avec ma super fenêtre:

    Nom : ExempleTab.png
Affichages : 34
Taille : 20,7 Ko

    Comme vous pouvez le constater, je n'arrive pas à lier les différentes pages à ce qui devrait être leur contenu.

    Voici le bout de code dans lequel je crée ma tab:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    		iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
    		iccx.dwICC = ICC_TAB_CLASSES;
    		InitCommonControlsEx(&iccx);
     
    		tab_handle = CreateWindowEx(WS_EX_CONTROLPARENT, WC_TABCONTROL, 0, WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS, 10, 10, 605, 420, hwnd, HMENU(TAB_PAGES), GetModuleHandle(NULL), 0);
    		Object->InserTabItem(tab_handle, L"Tab1", 0);
    		Object->InserTabItem(tab_handle, L"Tab2", 1);
    		Object->InserTabItem(tab_handle, L"Tab3", 2);
    		Object->InserTabItem(tab_handle, L"Tab4", 3);
    		button_handle = CreateWindowEx(0, WC_BUTTON, L"test-button-page2", WS_VISIBLE | WS_CHILD, 10, 50, 150, 30, tab_handle, HMENU(BT_TAB1_1), GetModuleHandle(NULL), 0);
    		label_handle = CreateWindowEx(0, WC_STATIC, L"test-label-page1", WS_VISIBLE | WS_CHILD, 10, 100, 150, 30, tab_handle, HMENU(LAB_TAB2_1), GetModuleHandle(NULL), 0);
    		//set the font of the tabs to a more typical system GUI font
    		SendMessage(tab_handle, WM_SETFONT,
    			reinterpret_cast<WPARAM>(GetStockObject(DEFAULT_GUI_FONT)), 0);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void CTRLWindows::InserTabItem(HWND handle, LPWSTR text, int id)
    {
    	TCITEM tci = { 0 };
    	tci.mask = TCIF_TEXT | TCIF_IMAGE;
    	tci.pszText = text;
    	tci.cchTextMax = wcslen(text);
    	TabCtrl_InsertItem(handle,id,&tci);
    	//SendMessage(handle, TCM_INSERTITEM, id, LPARAM(&tci));
    }

    Ceci est inclu dans le "case: CREATE" de la callback d'une fenêtre windows api classique.

    Ma question est:

    Comment lier un bouton à une tab?
    Comment faire fonctionner le tout?


    J'ai vu des exemple utilisant MFC, je n'ai pas cette possibilité.
    J'ai également vu des exemples qui proposent de changer la coordonnées des boutons assignées à une fenêtre hors de la fenêtre lorsque l'on change d'onglet, je trouve pas cela propre.
    Je n'arrive pas à aller dans une callback lorsque je change d'onglet, je ne récupère aucun signal, peut etre est-ce là l'origine du probleme?
    Je n'ai pas non plus trouvé comment assigner un bouton à une page, c'est un truc important qu'il me manque, mais je n'ai pas trouvé de tuto pour se faire.

    Je vous remercie pour votre aide,

    Yoda

  2. #2
    Membre éclairé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    septembre 2015
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : septembre 2015
    Messages : 143
    Points : 657
    Points
    657
    Par défaut
    bonjour

    pour les onglets, tu peux regarder ce tuto : https://chgi.developpez.com/windows/tab/
    là, il affiche/cache les widgets 1 par 1; tu peux faire une fenêtre mère pour chaque onglet et afficher ou non cette fenêtre (dans le cas où beaucoup de widgets)

    il y a aussi les property sheet qui sont peut-être plus faciles à gérer :
    - une fenêtre pour chaque onglet auquel tu associes une fonction callback

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2017
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Bonjour Xelland,

    bon sang, je me sens presque bête après avoir pourtant, je te l'assure, cherché beaucoup de solutions, d'avoir une solution efficace et relativement simple...!

    Je te remercie,

    passe de bonnes fêtes de fin d'années!

    Yoda

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 05/04/2018, 18h06
  2. Réponses: 2
    Dernier message: 09/11/2017, 22h54
  3. [API]Comment détruire une fenêtre à coup sur.
    Par mickael777 dans le forum C++
    Réponses: 4
    Dernier message: 27/09/2007, 11h10
  4. Fenêtre confirmation sur Programme Access
    Par psychee dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/04/2007, 13h57
  5. Image sur une fenêtre créer avec l'API
    Par Mirsa dans le forum Visual C++
    Réponses: 3
    Dernier message: 05/12/2006, 10h08

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