[C con Clase] scrollbars

Pedro R.G. sr.whiteskull en hotmail.com
Mie Abr 20 19:46:28 CEST 2011


 >En mi ventana tengo necesidad de dos scrollbars vertivales. ¿Cómo las puedo diferenciar en el evento WM_VSCROLL?Por su manejador o handle (hwnd), ya que cada objeto en Windows dispone de uno una vez creado...
barrav = CreateWindowEx( 0, "SCROLLBAR", NULL,SBS_VERT|WS_CHILD|WS_VISIBLE,         0, 0, 20, 120,hwnd,(HMENU)ID_SCROLLV,hinstance, NULL);
En el caso que muestras es "barrav". Luego, se recoge en el "lParam", tal como lo tienes, por lo que me hace pensar que solamente copiaste código sin apenas saber como funciona.
>Otra pregunta ¿Por qué no salen los triagulitos negros en los botones del scrollbar?>Creo que el evento WM_SIZE los borra:
El evento Size no lo borra, lo que pasa es que no ajustas bien la dimensión del ScrollBAr, en este caso el ancho. REcuerda que MoveWindows no solo mueve un objeto, también lo redimensiona.
http://msdn.microsoft.com/en-us/library/ms633534(v=vs.85).aspx

Date: Tue, 19 Apr 2011 13:06:23 -0700
From: andesbit en ymail.com
To: cconclase en listas.conclase.net
Subject: [C con Clase] scrollbars

Que tal
 
En mi ventana tengo necesidad de dos scrollbars vertivales. ¿Cómo las puedo diferenciar en el evento WM_VSCROLL?
 
mi evento está codificado asi para uno de los scrollbars
 
case WM_VSCROLL:       
      GetScrollInfo((HWND)lParam, SB_CTL, &si); 
      switch(LOWORD(wParam)) { 
        case SB_LINEDOWN:si.nPos++; break; 
        case SB_LINEUP:si.nPos--; break; 
        case SB_PAGEDOWN:si.nPos+=si.nPage; break; 
        case SB_PAGEUP:si.nPos-=si.nPage; break; 
        case SB_BOTTOM:si.nPos=si.nMax; break; 
        case SB_TOP:si.nPos=si.nMin; break; 
        case SB_THUMBTRACK://
        case SB_THUMBPOSITION: si.nPos=(int)wParam>>16;break; 
      }
     
 if(si.nPos<0)si.nPos = 0;
      _scrolly=si.nPos;
      SetScrollInfo((HWND)lParam, SB_CTL, &si, TRUE);
      break;          

Otra pregunta ¿Por qué no salen los triagulitos negros en los botones del scrollbar?
Creo que el evento WM_SIZE los borra:
 
  case WM_CREATE:
       hinstance=((LPCREATESTRUCT)lParam)->hInstance;
      barrav = CreateWindowEx( 0, "SCROLLBAR", NULL,SBS_VERT|WS_CHILD|WS_VISIBLE,
         0, 0, 20, 120,hwnd,(HMENU)ID_SCROLLV,hinstance, NULL);
      si.cbSize = sizeof(si); 
      si.fMask=SIF_RANGE|SIF_PAGE|SIF_POS;
      si.nMin=0;si.nMax=100;si.nPage=5;si.nPos=0; 
      SetScrollInfo(barrav, SB_CTL, &si, TRUE);
    break;   
    case WM_SIZE:
      GetClientRect(hwnd,&re);
      MoveWindow(barrav,re.right-20,re.top,re.right,re.bottom-_tamy_cuadro,1);
      
 break;          
    
Uso Dev c++ para windows
 
                                              Gracias
_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110420/383cedf3/attachment.html>


Más información sobre la lista de distribución Cconclase