Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1458 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Scroll bar avec Win32

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Scroll bar avec Win32

n°390443
Piemur2000
Posté le 12-05-2003 à 14:39:51  profilanswer
 

Bonjour,
 
Je n'arrive pas à utiliser les scroll bar de ma fenetre. G fait une fenetre avec un scroll bar horizontal, j'arrive à l'afficher, à lui affecter une valeur max et une valeur min, à le faire se deplacer de facon logiciel. Mais je n'arrive pas à ce que l'utilisateur puisse interagir avec : genre deplacer le curseur et appuyer sur les fleche. Ca fait rien...
 

Code :
  1. //Creation de la fenetre :
  2. hWnd = CreateWindow(szAppName, szTitle, WS_OVERLAPPEDWINDOW|WS_HSCROLL,
  3.  10, 10, 500, 500, NULL, NULL, hInstance, NULL);
  4. //affectation des valeurs :
  5. LPSCROLLINFO lpsi = (SCROLLINFO*)malloc(sizeof(SCROLLINFO));
  6.     lpsi->cbSize = sizeof(LPSCROLLINFO);
  7.     lpsi->fMask = SIF_POS| SIF_RANGE;
  8.     lpsi->nMax = Data.nbptPoints;
  9.     lpsi->nMin = 0;
  10.     lpsi->nPos = 0;
  11.     SetScrollInfo(hWnd, SB_HORZ, lpsi, TRUE);
  12. //deplacement logiciel :
  13.     lpsi->nPos = etape;
  14.     lpsi->fMask = SIF_POS;
  15.     SetScrollInfo(hWnd,SB_HORZ,lpsi,TRUE);


 
En fait je voudrais savoir comment permettre à l'utilisateur d'interagir avec et comment recuperer la nouvelle valeur?
 
Merci

mood
Publicité
Posté le 12-05-2003 à 14:39:51  profilanswer
 

n°390514
VisualC++
J'va y penser ...
Posté le 12-05-2003 à 15:11:05  profilanswer
 

Il faut que tu regardes les messages WM_HSCROLL et WM_VSCROLL et y a la fonction GetScrollPos aussi.

n°390622
Piemur2000
Posté le 12-05-2003 à 16:14:02  profilanswer
 

G essayé ca pour recuperer la valeur :

Code :
  1. case WM_HSCROLL:
  2.   lpsi->cbSize = sizeof(SCROLLINFO);
  3.   GetScrollInfo(hWnd,SB_HORZ,lpsi);
  4.   etape = lpsi->nTrackPos;
  5.   break;


 
mais ca marche pas... je recupere tjs 0  :heink:.

n°390631
VisualC++
J'va y penser ...
Posté le 12-05-2003 à 16:20:26  profilanswer
 

Euh tu as des param passes via le WM_HSCROLL
 


WM_HSCROLL  
nScrollCode = (int) LOWORD(wParam);  // scroll bar value  
nPos = (short int) HIWORD(wParam);   // scroll box position  
hwndScrollBar = (HWND) lParam;       // handle to scroll bar  


 
Enfin deja passe tu dans ton case ?

n°390641
Piemur2000
Posté le 12-05-2003 à 16:25:08  profilanswer
 

Oui je passe dans le case.
 
WM_HSCROLL  
nPos = (short int) HIWORD(wParam);   // scroll box position  
c la position modifié par l'utilisateur? ca sert a koi?

n°390643
VisualC++
J'va y penser ...
Posté le 12-05-2003 à 16:26:24  profilanswer
 

Euh regarde le msdn ca m evitera de faire un copier/coller :)

n°390647
Piemur2000
Posté le 12-05-2003 à 16:30:44  profilanswer
 

Oui c vrai c pas bete ;) , je v essayer de modifier avec ce ki disent ds msdn et je vous tien o courant...
 
Merci

n°390656
Piemur2000
Posté le 12-05-2003 à 16:36:04  profilanswer
 

Alors g fait ca :

Code :
  1. nScrollCode = (int) LOWORD(wParam);  // scroll bar value  
  2.   nPos = (short int) HIWORD(wParam);   // scroll box position  
  3.   if(nScrollCode == SB_THUMBPOSITION)
  4.   {
  5.    etape = nPos;
  6.   }


Ca marche quand je bouge le curseur mais les fleches ne fonctionnent pas... C normal? :??:

n°390663
VisualC++
J'va y penser ...
Posté le 12-05-2003 à 16:40:49  profilanswer
 

Oui car c un traitement supplementaire ca
 
Intercept les WM_KEYUP si c fleche tu fais traitement (soit directement, soit en lancant un SendMessage(hwnd, WM_HS_SCROL, ..) etc)

n°390678
Piemur2000
Posté le 12-05-2003 à 16:48:00  profilanswer
 

Heu dsl mais g pas tout compris, g regardé dans msdn pour WM_KEYUP mais je ne vois pas comment verifier si c les fleche et la quelle c? :pt1cable:  Tu peut etre un peu plus preci stp?
 
Merci

mood
Publicité
Posté le 12-05-2003 à 16:48:00  profilanswer
 

n°390776
VisualC++
J'va y penser ...
Posté le 12-05-2003 à 18:01:37  profilanswer
 

Ben avec le WM_KEYDOWN ou KEYUP tu as le code de la touche passé (enfin mm plus que cela comme indiqué ds la doc).
 
Suffit d'isole le code et si il est egale au code fleche haut ou bas de faire l'action voulue.
 
 
PS: pour le code de la touche, tu as qu a faire un TRACE/OutputDebug ou autre pour tester et recup les bons code je les connais pas la comme ca

n°390793
Piemur2000
Posté le 12-05-2003 à 18:36:35  profilanswer
 

AH OK mais je crois qu'on c t mal compris. Je parlais des fleches de chaque coté de la scroll bar pas des fleches du clavier!!!

n°390801
VisualC++
J'va y penser ...
Posté le 12-05-2003 à 18:50:36  profilanswer
 

Ah oki effectivement j avais pas compris.
 
C est le nScrollCode==SB_LINELEFT ou nScrollCode==SB_LINERIGHT alros qu il faut que tu regardes

n°391313
Piemur2000
Posté le 13-05-2003 à 08:57:10  profilanswer
 

OK merci beaucoup.  :jap:  :jap:  :jap:  
 
A+  :hello:  :bounce:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] Scroll bar avec Win32

 

Sujets relatifs
[C++] Utilisation de timer sous Visual C++ avec API Win32VB6: datagrid et scroll bar
[dev driver win32] DO_POWER_PAGABLE DO_POWER_INRUSHPb de barre de Scroll..
[C/C++] Thread en standard (no API win32)apache/mod ssl besoin d'aide sous win32 ?
win32::ODBCwin32::ODBC
[HTML/JS/CSS] Scroll ???[CSS] avoir un joli scroll
Plus de sujets relatifs à : [C++] Scroll bar avec Win32


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR