Page 1 of 1

Como saber que IDs estan definidos en un recurso

PostPosted: Fri Dec 23, 2005 11:41 am
by carlosmora
Hola,
bueno, pues lo dicho, quisiera saber si hay modo de conocer los IDs definidos en un Diálogo conociendo el nombre del diálogo, sin tener que definirlo y eso. En realidad me valdría aunque los tuviera que definir, pero antes del activate dialog.
Es para no tener que declarar a mano los say transparentes. Si les asigno un rango de IDs predefinido, recorro los id del diálogo y si esta en el rango le hago el redefine correspondiente.

Saludos

PostPosted: Tue Dec 27, 2005 8:48 am
by Antonio Linares
Carlos,

Tendrías que hacerlo desde la claúsula ON INIT en el ACTIVATE:

Code: Select all  Expand view
   ACTIVATE DIALOG oDlg ;
      ON INIT RedefineSays( oDlg )


En la función RedefineSays() a la que llamas, ya tienes el handle de ventana del diálogo, oDlg:hWnd. Y con ese handle puedes recorrer todos sus controles hijos:

Code: Select all  Expand view
function RedefineSays( oDlg )

   local hCtrl := GetWindow( oDlg:hWnd, GW_CHILD )

   while hCtrl != 0
      if GetClassName( hCtrl ) == "Static"  // SAY
         ...
      endif
      hCtrl = GetWindow( hCtrl, GW_HWNDNEXT )
   end

return nil

PostPosted: Tue Dec 27, 2005 3:21 pm
by carlosmora
Gracias Antonio,
Necesitaría conocer el ID porque según el mismo es la definicion que tengo del Say, por decirte algo, los ID 100 al 199 están con una fuente y un color, los 200 a 299 con otro, etc. Como obtengo el ID?

Gracias

PostPosted: Tue Dec 27, 2005 3:45 pm
by Antonio Linares
Carlos,

GetDlgCtrlID( hCtrl ) --> nId