Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - luis_74

#21
Cita de: eferion en 10 Abril 2015, 08:24 AM
Si por "usuario" quieres decir "programador" te tengo que corregir. No es invisible al programador.

Para que tu programa pueda mostrar una interfaz gráfica necesitas que tu código se conecte con la API correspondiente del sistema operativo que se encarga de gestionar la interfaz de usuario del sistema operativo. Lo que sucede es que normalmente no trabajas directamente sobre la API del sistema operativo, sino que haces uso de una librería que alguien se ha molestado en programar, y que te permite crear interfaces gráficas de una forma más sencilla.

En el caso de Delphi, la librería gráfica es la VCL (Visual Component Library). Además, tienes la "suerte" de que esta librería la proporciona Borland por defecto junto con el IDE, pero aunque no tengas que preocuparte por cómo funciona la clase "Button" de la VCL, has de saber que siempre vas a poder crear tus propios controles gráficos... y para poder hacer eso tienes que conocer cómo funciona esta librería.

En el caso de VisualBasic, la librería gráfica es la MFC (Microsoft Foundation Class). Tienes la "suerte" de que esta librería, al igual que la de Delphi, la proporciona Microsoft por defecto junto con su IDE.

En cualquier caso, has de saber que siempre tienes la opción de trabajar directamente con la API... al fin y al cabo cualquier componente gráfico se va a acabar apoyando antes o después en dicha API.

¿Por qué estoy tan seguro de que todo pasa por la API del sistema operativo? Muy sencillo. Si cada aplicación crease su propio gestor de ventanas sería imposible que pudieses visualizar varias aplicaciones a la vez en la pantalla del ordenador. Para que esto sea posible es necesario que exista un gestor común que se encargue de decidir qué ventana está encima de otra, con qué control está interactuando el usuario en cada momento, a qué control le llega el "foco" cuando el usuario manipula el ratón, etc.

En cuanto a cómo lo hacen con el bucle de mensajes... a ver, normalmente cuando se crea una aplicación con interfaz gráfica, se especifica una función que será la encargada de recibir todos los mensajes por parte del SO. En esta función se encapsula una secuencia de "if" para capturar todos los mensajes importantes para la aplicación. Cuando se recibe un mensaje que es reconcido por la aplicación, el código de esta función acaba llamando a un método concreto de la aplicación para que ese mensaje sea correctamente procesado.

Un ejemplo. Tienes una aplicación con dos botones (A y B), y quieres que al presionar el botón A aparezca un texto en pantalla. Entonces en el bucle de mensajes tienes que "escuchar" un mensaje de tipo "BOTON_PRESIONADO"... además, tendrás que asegurarte de que el botón presionado sea el A. Si todo lo anterior se cumple entonces el bucle de mensajes tiene que llamar a la función BotonAPresionado. Esta última función será la que muestre el mensaje por pantalla y, tras esto, la ejecución volverá al bucle de mensajes a la espera del siguiente mensaje.

#define BOTON_PRESIONADO = 0x01

#define A = 0x01
#define B = 0x02

void bucleMensajes( int mensaje, int control )
{
  if( mensaje == BOTON_PRESIONADO && control == A )
    BotonAPresionado( );
}

void BotonAPresionado( )
{
  // Mostrar mensaje en pantalla
}


El problema de trabajar a tan bajo nivel es que mantener ordenado la función del bucle de mensajes puede ser bastante complicado... las librerías gráficas te abstraen de esta parte, ya que ellas solas son capaces de configurar el bucle de mensajes en base a la configuración que tu ventana.




sí, me equivoque , era programador.

Lo de invisible me refería justo a eso , en delphi o vbasic el programador no trabaja directamente con la pi y no necesita saber como funciona internamente los componentes, todo está encapsulado, se apoya en las librerias, solo debe programar en los eventos on_click , on_mousemove y  todo funciona de maravilla.

mi duda era como se llevaba a cabo eso de crear los componentes o esa palabrita "encapsular", porque si antes o despues se tienen q apoyar en las apis, entonces los diseñadores de esos controles tambien habran usado las apis , como "meterias" un bucle de mensajes para cada control o ventana dentro de una clase sin "atascarse", si el bucle siempre da vueltas hasta que se cierre una ventana, en que momento se ejecutaria los bucles de las demas ventanas?



class ventana
{
     
     
private:
     
    void buclemensajes()

public:


};

void ventana::bucleMensajes( int mensaje, int control )
{
    BOOL bRet;
   
    //me quedo atascado en este while de la clase y no podre salir de la clase hasta que se cierre esta ventana :P y no podre ejecutar los otros bucles
   
    while( (bRet = GetMessage( &msg, hWnd, 0, 0 )) != 0)
    {
        if (bRet == -1)
        {
           //salir
        }
        else
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

}



}

#22
sí a eso me refiero, no se me ocurre como se manejraria el bucle de mensajes desde una clase, creo que se quedaria "atascado" sin salir de la clase, tenia curiosidad por saber como lo hacen los compiladores como visualbasic y delphi , en esos lenguajes es algo invisible al usuario.
#23
hola, bueno, usé internet explorer 11 que viene preinstalado en win8, usé por todo un dia (es la primera vez que lo uso), y pues no hay las molestias que mencioné, todo funciona como deberia.

ahora, esa publicidad no creo que sean propias de las paginas donde entro, me parece que el chrome las coloca a proposito, lo digo porque cuando entro a un tema en wikipedia y abro un enlace como "operadores aritmeticos c++"  se abre la publicidad , despues del segundo intento se accede correctamente al tema, no creo que wikipedia se preste a eso de la publicidad , no de esa manera tan incomoda para un usuario, ademas lo mismo sucede con páginas que creo yo imposible que se presten a eso, como la web de una ... ¿universidad, hospital, clinica, este foro? tendre que usar ese bloqueador  de ad supongo...


-olvide decir que esto no es exactamente a cada momento o cada clic que hago, pero si es muy molesto.
#24
en los ejemplos de  la programacion de windows y c++ que encontré se crean las ventanas y controles usando funciones y variables individualmente,  me paso por la mente: si se ¿pudiera "meter" todo lo relacionado a la creacion de ventanas y controles dentro de clases c++ y tratarlos como si fuesen controles de delphi o VB? como se haria , algun tutorial ?
#25
abro una pagina cualquiera, puede ser de una clinica, universidad o este foro, y al pinchar en cualquier enlace por ejemplo "contactanos" , "pagina principal", "mapa del sitio" , "galeria" , etc etc, se abre otra pestaña con anuncios y dentro de estos las palabras que busqué algunos días antes, o peor aveces se abren pestañas sin clicar nada, aveces no se puede copiar algun codigo de ejercicios de programacion porque sale ese icono de mano como si fuese un link y se abre más publicidad, despues de clicar la segunda vez se abre la pagina correcta.

#26
pense que quizas el problema sea que el av. intenta conectar antes de que el modem este completamente conectado a internet , pero no, el modem esta
como 2 horas encendido antes que el pc, este es el error que me sale:

Ver Imagen: http://s2.subirimagenes.com/otros/previo/thump_9362251error-av.jpg



ya lleva mas de 1 hora encendido el pc y no se actualizaba por si mismo hasta que le di mi atencion y recien lo hizo :(


al arrancar el pc , la tienda de windows tambien dice algo como "no pudo conectar, intentelo mas tarde", como dije antes no habia este problema,
poco tiempo atras quite una actualizacion la KB2995388 
#27
trate con ccleaner pero seguia el problema, al final lo solucione creando un nuevo hotmail , agregandole contastos falsos y logueandome, ahora en las busquedas aparecen los contactos falsos ;-)
#28
entre en los archivos hosts , networks y imhosts.sam :


_____________________________CONTENIDO DE hosts____________________________________


# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
# 127.0.0.1       localhost
# ::1             localhost





_____________________________CONTENIDO DE Imhosts.sam______________________


# This file is compatible with Microsoft LAN Manager 2.x TCP/IP lmhosts
# files and offers the following extensions:
#
#      #PRE
#      #DOM:<domain>
#      #INCLUDE <filename>
#      #BEGIN_ALTERNATE
#      #END_ALTERNATE
#      \0xnn (non-printing character support)
#
#
#
#
# Finally, non-printing characters can be embedded in mappings by
# first surrounding the NetBIOS name in quotations, then using the
# \0xnn notation to specify a hex value for a non-printing character.
#
# The following example illustrates all of these extensions:
#
# 102.54.94.97     rhino         #PRE #DOM:networking  #net group's DC
# 102.54.94.102    "appname  \0x14"                    #special app server
# 102.54.94.123    popular            #PRE             #source server
# 102.54.94.117    localsrv           #PRE             #needed for the include
#
# #BEGIN_ALTERNATE
# #INCLUDE \\localsrv\public\lmhosts
# #INCLUDE \\rhino\public\lmhosts
# #END_ALTERNATE
#




____________________________________CONTENIDO DE network_______________________


# Copyright (c) 1993-1999 Microsoft Corp.
#
# This file contains network name/network number mappings for
# local networks. Network numbers are recognized in dotted decimal form.
#
# Format:
#
# <network name>  <network number>     [aliases...]  [#<comment>]
#
# For example:
#
#    loopback     127
#    campus       284.122.107
#    london       284.122.108

loopback                 127



el contenido era grande, copie lo que parecia mas importante, ves algo raro?
#29
 instale unos juegos de la tienda de windows 8 y en cada instalacion pedia que cambie a una cuenta microsoft , ahi ponia mi hotmail , al terminar de instalar cerre la sesion e inicie en la cuenta local y todo normal, hasta  que por error note que si escribo algo en la funcion "buscar" de la pantalla principal de windows 8 (que esta al lado de una lupa) se muestran ademas de los resultados los contactos de mi hotmail que coinciden con el texto escrito, no entiendo porque pasa esto si he cerrado correctamente , incluso ahora que estoy con una cuenta local siguen mostrando los contactos en los resultados de busqueda.
#30
Windows / ¿este es un sintoma de infeccion?
31 Marzo 2015, 23:48 PM
al encender el pc , abro el antivirus eset en actualizacion hay un icono rojo y dice esto:

la base de firma de virus termino con un error
servidor no encontrado


debo darle clic en el boton actualizar ahora, y listo, todo normal. Pero parece raro, antes se actualizaba solo , y no daba errores.


esto sucede todos los dias.