Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


Punteros

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

Punteros

Notapor farga el Mar Sep 13, 2005 6:37 am

Hola.
Por favor, agradezco de antemano que alguien me explique detalladamente la siguiente linea de codigo:
GetDlgItem(ID)->SetWindowText("algo");
Me gustaria saber que es cada uno de estos elementos, donde estan declarados, a que clase pertenecen, y si puedo hacer lo mismo con otras clases.
Muchas gracias.
Saludos.
Farga.
farga
Usuario Muy Activo
Usuario Muy Activo
 
Mensajes: 135
Registrado: Jue Ago 04, 2005 5:32 am

Re: Punteros

Notapor ibarra el Lun Sep 26, 2005 8:20 am

farga escribió:Hola.
Por favor, agradezco de antemano que alguien me explique detalladamente la siguiente linea de codigo:
GetDlgItem(ID)->SetWindowText("algo");
Me gustaria saber que es cada uno de estos elementos, donde estan declarados, a que clase pertenecen, y si puedo hacer lo mismo con otras clases.
Muchas gracias.
Saludos.
Farga.



GetDlgItem(ID)->SetWindowText("algo");


ID = Identificador de la ventana donde vas a poner con la funcion:

SetWindowText("algo"); -> "algo = Titulo que poner en la ventana" y te falta el handler de la ventana donde vas a poner "algo"

la forma correcta es
BOOL SetWindowText(
HWND hWnd, (Handle de la ventana o el control donde el texto va a ser cambiado)
LPCTSTR lpString (el texto nuevo que vas a poner )
);



te hace falta la libreria "User32.lib"


GetDlgItem es de la ventana principal ... normalmente es una "CWinApp"

bye
ibarra
Usuario Activo
Usuario Activo
 
Mensajes: 34
Registrado: Vie Abr 15, 2005 8:26 am

Re: Punteros

Notapor DJK el Lun Sep 26, 2005 6:10 pm

Hola:

Te explico un poco para ke puedas entender algo mas acerca de las apis de Windows ok:

GetDlgItem: es un api que te permite obtener el manipulador o handle ( HWND ) de cualquier ventana; ojo que todo lo que controla una aplicacion son objetos de tipo de Ventana, editbox, button, list, treeview, etc, pero que al usar MFC estan ya encapsulados y previamente Abstraidos en las clases definidas, ahora cuando especificas el ID esta api se encargara de buscar en los recursos el ID correspondiente a su control y te devolvera el manipularo si esque existe en caso contrario retorna NULL, pero este no es el valor de la ventana principal si no mas bien esta indicando ke hubo un error en el ID o no existe.

Ahora bien como GetDlgItem te devuelve un HWND, este es del tipo CWnd * si estas usando MFC, por eso es que se puede acceder a la funcion SetWindowText() a traves del puntero, porque es una funcion miembro de la clase CWnd y entre otras cosas mas complicadas ok.

SetWindowText: es una api que se utiliza para cambiar el texto de una ventana definida, en el caso anterior el manipulador ke devuelve el GetDlgItem, que ya te ha devuelto el manipulador de acuerdo al ID del Objeto que estas utilizando, si tan solo utilizas la funcion SetWindowText sin utilizar un Puntero este asumira por defecto que es llamado por CWnd y cambiara el texto de tu Aplicación princial, puesto que el HWND seria igual a NULL, y como todos sabes NULL es el manipulador de la ventana principal que asu vez es hija de HWND to DESK, o un manipulador del escritorio de Windows el cual es padre de todos los HWND ke se puedan krear, es por esta razon que cuando haces un Process Viewer utilizas el HWND to DESK y te listara todos los hijos que esta contenga, claro utilizando apis como CreateProcess y etc...

Ejemplo:
Código: Seleccionar todo
   CWnd *pEdit;   
   // Declaras una variable que de vuelve un Puntero a CWnd

   pEdit = ( CWnd * ) GetDlgItem( IDC_EDIT_CONTROL ); 
   // Obtenemos el HWND del EditBox cuyo ID = IDC_EDIT_CONTROL

   pEdit->SetWindowText("Edit Control"); 
   // Agregamos el texto "Edit Control" en el control


Bueno para mayor información refierete a el SDK de windows ok.

Saludos
Your Kung Fu is not So Good!!!
Avatar de Usuario
DJK
Usuario Activo
Usuario Activo
 
Mensajes: 24
Registrado: Vie Jun 20, 2003 10:37 am
Ubicación: Puno - Perú


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados