begin process at 2012 05 30 17:10:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

Scrollbar et Win32


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Scrollbar et Win32

lundi 19 avril 2004 à 17:37:12 | Scrollbar et Win32

MixerAnderson

Bonjour,

Depuis quelques temps je développe une IHM en Win32. J'ai développé des classes c++ dans lequel je gère le WndProc en méthode de classe (grace au GWL_USERDATA).
Jusque là tout va bien, j'ai fait des petites fenêtres, des petites boites de dialogue, des petits boutons, presque tous les controles. Jusqu'à ce que j'arrive au Tab Control (les onglets).

En sélectionnant chaque onglets, j'ai pas trouvé mieux pour faire apparaitre/disparaitre chaquee panel, que de faire apparaitre en premier plan ou cacher les éléments correspondant au panel.
Malheureusement dans mes panels, je veux mettre un certain nombre de boutons de facon dynamique et verticalement par exemple. Naturellement ils dépassent du panel (je suis sur WinCE, l'écran est tout piti) d'ou l'intervention d'une SCROLLBAR.
Et là je ne sais pas trop comment m'y prendre.

C bon, vous suivez encore ?

2 possibilités :
_ soit je fait une fenetre par panel munis d'une scrollbar.
_ soit j'ajoute une scrollbar directement.

Mais dans les 2 cas, j'ai pas vu de gestion automatique de la scrollbar. Dois-je faire la gestion de tous les événements WM_VSCROLL (PAGEUP, BOTTOM, TOP, ...) ?
Si oui (pas de solution automatique comme pour les list box) :
_ si j'utilise une scrollbar ajouté sans fenetre supplémentaire pour gérer chaque panel, comment bien gérer les boutons pour qu'il apparaissent UNIQUEMENT dans la région du tab control ?
_ quelque a t'il un exemple bien fourni ?
lundi 19 avril 2004 à 23:48:25 | Re : Scrollbar et Win32

JCDjcd


Tu traites toi meme le WM_HSCROLL un fois pour toute.
C'est un peu chiant au debut, mais une fois que tu l'as fais, c'est fini.

mardi 20 avril 2004 à 16:04:15 | Re : Scrollbar et Win32

MixerAnderson

Merci, je m'en doutais.

Voilà l'option que j'ai choisie :

/* creation des controles */

notebook = CreateWindowEx( 0, WC_TABCONTROL, NULL, WS_CHILD | WS_TABSTOP | WS_CLIPSIBLINGS | WS_VISIBLE, 5, 10, rcClient.right - 10, rcClient.bottom - MENU_HEIGHT - 5, hwnd, NULL, hInst, NULL );

scrollbar = CreateWindow( TEXT("SCROLLBAR"), NULL, WS_CHILD | WS_VISIBLE | SBS_VERT, ..., hwnd, NULL, hInst, NULL);

for (i = 0; i < QUELCONQUE; i++)
button[i] = CreateWindow( TEXT("BUTTON"), NULL, WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 20, 10 + i*25, 15, 15, hwnd, NULL, hInst, NULL);

...

/* dans le WndProc */

if (msg == WM_VSCROLL)
{
newvalue = oldvalue;
switch ( GET_WM_VSCROLL_CODE(wParam,lParam) )
{
case SB_BOTTOM : newvalue = 0; break;
case SB_TOP : newvalue = 100; break;
case SB_LINEDOWN : newvalue ++; break;
case SB_PAGEDOWN : newvalue += 10; break;
case SB_LINEUP : newvalue --; break;
case SB_PAGEUP : newvalue -= 10; break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK : newvalue = GET_WM_VSCROLL_POS(wParam,lParam); break;
}
newvalue = max(0,min(100,newvalue));
SetScrollPos(hwnd,SB_CTL,newvalue,TRUE);
}
UpdatePanel( newvalue );
oldvalue = newvalue;
}

Maintenant ma question se situe dans : qu'est-ce que je peux mettre dans le UpdatePanel ?

S'il s'agit de faire un petit algo qui calcule la nouvelle position des boutons, je peux le faire. Mais dans ce cas je ne sais pas faire apparaitre la partie seulement visible des boutons par rapport au panel. Est-ce qu'il y a un systeme de région (clipping, ...) ? Est-ce que ca se gère dans un WM_PAINT ?
Je suis total novice dans ce domaine. Merci par avance de vos bonnes idées
jeudi 22 avril 2004 à 22:28:04 | Re : Scrollbar et Win32

MixerAnderson

C bon ! J'ai trouvé la réponse. Je suis gentil, je ne vous laisse pas continuer à chercher.
En fait la solution était sous mes yeux, mais j'étais aveugle ce jour-là ! Quoique il en soit, c'est dans les fonctions API Windows de la scrollbar :
la magique ScrollWindowEx()

Avec des paramètres de quoi faire joujou comme on veut.


Cette discussion est classée dans : boutons, tab, panel, win32, scrollbar


Répondre à ce message

Sujets en rapport avec ce message

ScrollBar Win32 [ par piemur2000 ] Bonjour,Je voudrais recuperer la valeur d'une scrollbar lorsque l'utilisateur modifie sa valeur.G fait ca :case WM_HSCROLL: lpsi->cbSize = sizeof(SCRO Win32 simulation de touche du clavier [ par zibo3 ] Bonjour, j'ai un petit souci, j'aimerai pouvoir simuler l'appuie sur la touche TAB mais avec la touche SHIFT appuyé.Je sais que je dois envoyé un évén Problème de couleur des boutons avec les tabs et le thème XP [ par hwti ] J'ai une boîte de dialog statique, sur laquelle j'ajoute un tab à l'éxécutionLes pages du tab sont des boîtes de dialogue statiques crées en tant qu'e WndProc , TAB RETURN et ESCAPE [ par Renfield ] Bonjour a tous, j'ai un petit soucis.... mon programme tourne bien, je butte sur des trucs bêtes...j'ai un ComboBox, et deux boutons....je voudrais si C++ Winforms : PB Affichage lent d'un panel de 50 boutons [ par sebsebz ] Je souhaite réaliser une application toute bête à partir de winform (en c++).Elle contient : Un formulaire avec une image de fond3 boutons principaux générer code api win32 [ par zwei ] bonjour à tous,lorsqu'on crée une fenetre avec des boutons avec la MFC sous VC++ par exemple, le code est générer automatiquement.existe t-il la meme Boutons dans un Control Tab [ par aujeanfr ] Bonjour,Je debute vc++ . G placé des boutons dans un Control Tab (sur des onglets dans ma fenêtre principale).Et lorsque je veux tester ces boutons av (win32) scrollbar sur partie de l'ecran [ par mogwai93 ] bonjour, j'aimerais avoir un scrollbar que sur une zone de l'ecran exemple :   http://img154.imageshack.us/img154/221/image6gr.gif pour le moment, j Utilisation de tab dans une appli win32 [ par zibo3 ] Bonjour, j'utilise le code suivant dans ma fenêtre pour créer deux champs Edit et j'aimerai naviguer à l'aide de la touche Tab mias mon ordinateur eme (win32) Tabulations et scrollbar [ par mogwai93 ] Bonjour j'ai une fenetre avec une zone avec scrollbar cette zone contient plusieurs objets "edit" ils ne sont pas tous visibles au meme moment, d'où


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,880 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales