Duda con ventanas y c++

Iniciado por 5cr173R, 11 Junio 2013, 19:50 PM

0 Miembros y 1 Visitante están viendo este tema.

5cr173R

Buenas, estoy desarrollando un programa que reemplazara el escritorio de windows, algo asi como un wallpaper muy elaborado, pero necesito saber como mantener a mi ventana al nivel del escritorio (Lo mas abajo).
El programa lo desarrollo en Game Maker 8, y la DLL en la que debe estar la funcion de mover la ventana abajo con Dev-C++.
Se que con esta funcion:

SetWindowPos(wnd,HWND_BOTTOM,0,0,0,0,SWP_NOSIZE + SWP_NOMOVE);

empujo a la ventana, pero tengo que ejecutarla muchas veces para mantenerla abajo, y esto hace que la barra de tares parpadee y cuando le paso el foco a las ventanas normales, estas tambien parpadean.

Que me aconsejan? de antemano se les agradece y si quieren credito en el proyecto con mucho gusto los incluyo.
Gracias
No tengo parientes, yo hago que la Tierra y el Cielo lo sean.
No tengo hogar, yo hago que mi cuerpo lo sea.
No tengo poder divino, yo hago de la honestidad mi poder.
No tengo medios, yo hago mis medios de la docilidad.
No tengo poder mágico, yo hago de mi personalidad mi magia.
No tengo cuerpo, yo hago del estoicismo mi cuerpo.
No tengo ojos, yo hago del relámpago mis ojos.
Watashi wa bushi

engel lex

y si la ocultas? y si la escondes arriba del escritorio en posiciones negativas?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

amchacon

Sin ver el código, se me ocurre:

while (1) // bucle
{
 // Programa

 SetWindowPos();

 Sleep(500); // Duermo el programa 500 ms.

}


Lo que quiero decirte es que uses Sleep(); para hacer descansar el programa, al hacer menos operaciones debería de parpadear menos.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

5cr173R

Cita de: engelx en 11 Junio 2013, 19:57 PM
y si la ocultas? y si la escondes arriba del escritorio en posiciones negativas?

No comprendo, que son posiciones negativas?
En si es una ventana ajena al codigo en c++ (La dll la hago en C++ y la aplicacion en Game Maker), ya que game maker es un IDE escrito en delphi y utiliza funciones externas definidas desde librerias  o DLLs, la fucion solo la puedo llamar entre cada actualizacion de ventana, asi que mi cuestion es si puedo definir a la ventana (Editar algun LONG con SetWindowLong) que la mantenga por debajo sin llamar varias veces a la funcion.
Gracias
No tengo parientes, yo hago que la Tierra y el Cielo lo sean.
No tengo hogar, yo hago que mi cuerpo lo sea.
No tengo poder divino, yo hago de la honestidad mi poder.
No tengo medios, yo hago mis medios de la docilidad.
No tengo poder mágico, yo hago de mi personalidad mi magia.
No tengo cuerpo, yo hago del estoicismo mi cuerpo.
No tengo ojos, yo hago del relámpago mis ojos.
Watashi wa bushi

5cr173R

Cita de: amchacon en 11 Junio 2013, 19:59 PM
Sin ver el código, se me ocurre:

while (1) // bucle
{
 // Programa

 SetWindowPos();

 Sleep(500); // Duermo el programa 500 ms.

}


Lo que quiero decirte es que uses Sleep(); para hacer descansar el programa, al hacer menos operaciones debería de parpadear menos.

Creo que veo la idea, pero la cosa es que el codigo que empuje la ventana va dentro de una DLL.
La ventana que lo llama no esta escrita en C++, sino con Game Maker (Lenguaje GML).

Llevo esto en la dll:

Código (cpp) [Seleccionar]

#include <windows.h>

DLLIMPORT double window_set_bottom (char* procesog)
{
HWND wnd = FindWindow(0,procesog);
SetWindowPos(wnd,HWND_BOTTOM,0,0,0,0,SWP_NOSIZE + SWP_NOMOVE);
}

void DllMain ()
{

}


Y en la aplicacion de Game Maker la defino con

Código (gml) [Seleccionar]

global.set_bottom = external_define("GMMFDLL.DLL",'window_set_bottom',dll_cdecl,ty_real,1,ty_string);


Y la llamo desde un evento asi

Código (gml) [Seleccionar]

external_call(global.set_bottom,"paradize") // donde paradize es mi aplicacion


Eso la empuja, pero al volver el foco a "Paradize", vuelve a ponerla arriba
No tengo parientes, yo hago que la Tierra y el Cielo lo sean.
No tengo hogar, yo hago que mi cuerpo lo sea.
No tengo poder divino, yo hago de la honestidad mi poder.
No tengo medios, yo hago mis medios de la docilidad.
No tengo poder mágico, yo hago de mi personalidad mi magia.
No tengo cuerpo, yo hago del estoicismo mi cuerpo.
No tengo ojos, yo hago del relámpago mis ojos.
Watashi wa bushi

amchacon

HWND wnd = FindWindow(0,procesog);
SetWindowPos(wnd,HWND_BOTTOM,0,0,0,0,SWP_NOSIZE + SWP_NOMOVE);


Prueba a poner:

HWND wnd = FindWindow(0,procesog);
SetWindowPos(wnd,HWND_BOTTOM,0,0,0,0,SWP_NOSIZE + SWP_NOMOVE);
Sleep(200);

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

5cr173R

Cita de: amchacon en 11 Junio 2013, 20:17 PM
HWND wnd = FindWindow(0,procesog);
SetWindowPos(wnd,HWND_BOTTOM,0,0,0,0,SWP_NOSIZE + SWP_NOMOVE);


Prueba a poner:

HWND wnd = FindWindow(0,procesog);
SetWindowPos(wnd,HWND_BOTTOM,0,0,0,0,SWP_NOSIZE + SWP_NOMOVE);
Sleep(200);



Tendre que probarlo, si funciona te aviso, gracias por la ayuda
No tengo parientes, yo hago que la Tierra y el Cielo lo sean.
No tengo hogar, yo hago que mi cuerpo lo sea.
No tengo poder divino, yo hago de la honestidad mi poder.
No tengo medios, yo hago mis medios de la docilidad.
No tengo poder mágico, yo hago de mi personalidad mi magia.
No tengo cuerpo, yo hago del estoicismo mi cuerpo.
No tengo ojos, yo hago del relámpago mis ojos.
Watashi wa bushi