Page 1 of 1

Control ID en un diálogo

PostPosted: Sat Aug 01, 2009 5:19 am
by Antonio Linares
Como buscar un control ID en un diálogo (sin redefinir sus controles):
Code: Select all  Expand view

DEFINE DIALOG oDlg RESOURCE cResDlgName

ACTIVATE DIALOG oDlg ;
  ON INIT ( lFound := LookForControl( oDlg:hWnd, nCtrlId ), oDlg:End() )

...

function LookForControl( hDlg, nCtrlId )

  local hCtrl

  while ( hCtrl := GetWindow( hDlg, GW_CHILD ) ) != 0 .and. GetParent( hCtrl ) == hDlg
     if GetWindowLong( hCtrl, GWL_ID ) == nCtrlId
        return .T.
     endif
     hCtrl = GetWindow( hCtrl, GW_HWNDNEXT )
  end

return .F.
 

Re: Control ID en un diálogo

PostPosted: Sat Aug 01, 2009 12:36 pm
by Ariel
Antonio,

Perdón mi ignorancia, y ... cual es el sentido de buscar un ID si no lo REDEFINO ????

Salu2, Ariel.

Re: Control ID en un diálogo

PostPosted: Mon Aug 03, 2009 2:52 pm
by Antonio Linares
Ariel,

Algunos usuarios me preguntaron la forma de hacerlo.

Imagino que para aplicaciones grandes y genericas en donde lo puedan necesitar :-) (módulos parecidos pero con diferencias que reusen código, etc.)

Re: Control ID en un diálogo

PostPosted: Mon Aug 03, 2009 4:14 pm
by Ariel
Antonio,

Gracias x responder, no lo habia pensado asi :)

Seguimos aprendiendo.... jejeje

Salu2.

Re: Control ID en un diálogo

PostPosted: Thu Jan 14, 2010 5:45 pm
by ICO
Hola mr Antonio ¿Podría mostrarme un ejemplo en la práctica? Por ejemplo yo tengo en mi controles de diálogo ID 4050.4051 y 4052 .... etc
como lo hago basado en el ejemplo anterior? No soy capaz de trabajar en mi PRG, regresa este error

Code: Select all  Expand view
Error description: Error BASE/1003  Variable does not exist: GW_CHILD


que es eso GW_CHILD?

Gracias

Re: Control ID en un diálogo

PostPosted: Thu Jan 14, 2010 6:00 pm
by Daniel Garcia-Gil
Hola ICO

coloca estos define, seguro los necesitaras

#define GW_HWNDNEXT 2
#define GW_CHILD 5
#define GWL_ID (-12)

GW_CHILD es un "flag" que usa la funcion GetWindow, por eso el prefijo (GW)
http://msdn.microsoft.com/en-us/library/ms633515(VS.85).aspx

GWL es para la funcion GetWindowLong...
podras encontrar muchas variables con distintos prefijos es una manera facil de identificar la funcion que lo usa

Re: Control ID en un diálogo

PostPosted: Thu Jan 14, 2010 6:30 pm
by ICO
Hola Daniel
poner la define como se muestra, pero mi aplicación dejó de funcionar

Abraços..

Re: Control ID en un diálogo

PostPosted: Thu Jan 14, 2010 11:14 pm
by Antonio Linares
Luiz,

Puedes poner un ejemplo completo de cómo lo estás usando ? gracias

Re: Control ID en un diálogo

PostPosted: Fri Jan 15, 2010 1:12 am
by ICO
Ola Antonio
es exactamente lo que mi quieres saber, Copei y pegado su ejemplo, que está por encima y en lugar de nctrlID poner 4050.4051 Quiero saber dónde colocar los identificadores

no tengo idea de cómo proceder

Gracias

Re: Control ID en un diálogo

PostPosted: Tue Jan 19, 2010 9:58 am
by Antonio Linares
Luiz,

Los identificadores tienen que estar definidos en tu fichero RC

Re: Control ID en un diálogo

PostPosted: Tue Jan 19, 2010 10:35 am
by ICO
Gracias Antonio, voy a tratar de hacer después de que el informe del resultado..

abrazos