elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Donde hay que declarar las funciones propias que usan controles creados
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Donde hay que declarar las funciones propias que usan controles creados  (Leído 2,726 veces)
Nucleorion

Desconectado Desconectado

Mensajes: 72


Ver Perfil
Donde hay que declarar las funciones propias que usan controles creados
« en: 11 Febrero 2017, 23:10 pm »

Tengo un programa en c++ en el que uso controles de wxwidgets. El IDE que uso es CodeBlocks. Yo declaraba mis funciones justo antes de donde aparecen las funciones que crean los manejadores de los controles añadidos al formulario. Pero si intento hacer uso de una propiedad de un control me dice que no esta declarado.

Por ejemplo un wxTextCtrl llamado txtRuta y lo que hago es coger el texto en una funcion que quiero que este disponible despues de construirse el form.

aplicacionMain.cpp
Código
  1. ...
  2. void aplicacionFrame::OnAbout(wxCommandEvent& event)
  3. {
  4.    wxString msg = wxbuildinfo(long_f);
  5.    wxMessageBox(msg, _("Welcome to..."));
  6. }
  7.  
  8. //Aqui es donde coloco las funciones que quiero que esten disponibles
  9. wxString PerfilActual(){
  10.    wxString ruta=wxString::Format(txtRuta->GetValue()+"\\UserData\\PerfilActual.txt");
  11.    return ruta;
  12. }
  13.  
  14. //Aqui van las funciones que creo desde el IDE
  15. void aplicacionFrame::OnButtonClick(wxCommandEvent& event)
  16. {
  17.    wxString mensaje=PerfilActual();
  18.    wxMessageBox(mensaje,"Aviso", wxICON_INFORMATION);
  19. }
  20. ...
  21.  

El "error: 'txtRuta' was not declared in this scope" es porque coloco mal la funcion PerfilActual o hago mal otra cosa?



« Última modificación: 12 Febrero 2017, 10:16 am por Nucleorion » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Donde hay que declarar las funciones propias que usan controles creados
« Respuesta #1 en: 12 Febrero 2017, 13:53 pm »

No usé wx, pero te adelanto algo:
txtRuta no es una global, así que no podrás usarla en la función (es así, no está definida).
Si no me equivoco, ese control deberías poderlo usar en métodos de la clase aplicacionFrame, que es donde supongo que está declarado.

Lo que puedes hacer es 1 de 2: o que esa función sea un método de la clase aplicacionFrame, o pasar el txtRuta como parámetro a la función PerfilActual.


En línea

Nucleorion

Desconectado Desconectado

Mensajes: 72


Ver Perfil
Re: Donde hay que declarar las funciones propias que usan controles creados
« Respuesta #2 en: 13 Febrero 2017, 04:11 am »

Efectivamente esta declarado en aplicacionFrame.

Como la funcion solo se va a usar en ese formulario he optado por hacer que sea un metodo de la clase aplicacionFrame.

Quedando asi:
Código
  1.    ...
  2.    void aplicacionFrame::OnAbout(wxCommandEvent& event)
  3.    {
  4.        wxString msg = wxbuildinfo(long_f);
  5.        wxMessageBox(msg, _("Welcome to..."));
  6.    }
  7.  
  8.    //Aqui es donde coloco las funciones que quiero que esten disponibles
  9.    wxString aplicacionFrame::PerfilActual(){
  10.        wxString ruta=wxString::Format(txtRuta->GetValue()+"\\UserData\\PerfilActual.txt");
  11.        return ruta;
  12.    }
  13.  
  14.    //Aqui van las funciones que creo desde el IDE
  15.    void aplicacionFrame::OnButtonClick(wxCommandEvent& event)
  16.    {
  17.        wxString mensaje=PerfilActual();
  18.        wxMessageBox(mensaje,"Aviso", wxICON_INFORMATION);
  19.    }
  20.    ...
  21.  

No olvidar que ademas debe ser declarada dentro de la clase aplicacionFrame en ...Main.h

Muchas gracias

Algun curso de video de c++ que llegue hasta la explicacion de clases y metodos?
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Donde hay que declarar las funciones propias que usan controles creados
« Respuesta #3 en: 13 Febrero 2017, 10:07 am »

http://www.minidosis.org/#/temas
Vídeos, texto y ejercicios. Pero especialmente vídeos. De ese tema y otros.
En línea

Nucleorion

Desconectado Desconectado

Mensajes: 72


Ver Perfil
Re: Donde hay que declarar las funciones propias que usan controles creados
« Respuesta #4 en: 13 Febrero 2017, 13:13 pm »

Genial!

Justo lo que necesitaba :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Apagar pc con funciones propias de Java
Java
_rez3t45_ 7 12,809 Último mensaje 30 Septiembre 2009, 15:17 pm
por Debci
Controles creados dinamicamente, tengo un problema? « 1 2 »
.NET (C#, VB.NET, ASP)
TrashAmbishion 13 7,342 Último mensaje 26 Mayo 2012, 20:07 pm
por $Edu$
No funcionan controles creados en tiempo de ejecución dentro de un Tabpage
Programación Visual Basic
Nietoma 0 1,634 Último mensaje 25 Mayo 2012, 11:07 am
por Nietoma
Funciones PROPIAS para manejo de strings en C/C++ « 1 2 »
Programación C/C++
Álvaro G. Tenorio 12 7,905 Último mensaje 3 Septiembre 2013, 09:44 am
por eferion
Sobre controles creados de forma dinamica
.NET (C#, VB.NET, ASP)
rulovive 5 4,034 Último mensaje 28 Mayo 2018, 19:54 pm
por rulovive
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines