Cerrar una ventana

03/11/2007 - 00:49 por Asier | Informe spam
Hola,

Tengo un form abierto (Form1) y desde el quiero que al pinchar un boton se
cierre el otro form (Form2) que tengo abierto. Del Form2 tengo su handle en
formato IntPtr.

Alguna idea??

Gracias y saludos

Asier

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
03/11/2007 - 08:45 | Informe spam
"Asier" wrote in message
news:
Tengo un form abierto (Form1) y desde el quiero que al pinchar un boton se
cierre el otro form (Form2) que tengo abierto. Del Form2 tengo su handle
en formato IntPtr.

Alguna idea??



Podrías llamar a la API mediante P/Invoke:

[DllImport("user32.dll")]
static extern bool CloseWindow(IntPtr hWnd);
Respuesta Responder a este mensaje
#2 Asier
03/11/2007 - 16:35 | Informe spam
Hola,

La funcion que me dices me minimiza la pantalla, no la destruye, pero
buscando he visto que lo puedo hacer con

[DllImport("user32.dll")]
static extern bool DestroyWindow(IntPtr hWnd);

De todas formas me da error

Saludos

Asier

"Alberto Poblacion"
escribió en el mensaje de noticias
news:
"Asier" wrote in message
news:
Tengo un form abierto (Form1) y desde el quiero que al pinchar un boton
se cierre el otro form (Form2) que tengo abierto. Del Form2 tengo su
handle en formato IntPtr.

Alguna idea??



Podrías llamar a la API mediante P/Invoke:

[DllImport("user32.dll")]
static extern bool CloseWindow(IntPtr hWnd);


Respuesta Responder a este mensaje
#3 RFOG
03/11/2007 - 16:53 | Informe spam
Si te devuelve false es que windows no puede destruir la ventana... porque
no sea realmente una o por algún otro motivo.

Deberías usar GetLastError (también de win32) que de dirá por qué no se ha
destruido... pero lo que no sé es si entre dos llamada interop se conserva
el estado (yo me imagino que no).

http://msdn2.microsoft.com/en-us/li...79360.aspx

La firma para GetLastError podría no andar muy lejos de esta:

[DllImport("kernel32.dll")]
static extern unsigned short DestroyWindow(void);

Y luego con el código de error recibido, lo puedes mirar aquí:
http://msdn2.microsoft.com/en-us/li...81381.aspx

O llamar a FormatMessage (win32) para que te de un texto coherente.

Microsoft Visual C++ MVP
==Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Dios existe; pero no tiene ninguna prisa de hacerlo saber.

"Asier" wrote in message
news:
Hola,

La funcion que me dices me minimiza la pantalla, no la destruye, pero
buscando he visto que lo puedo hacer con

[DllImport("user32.dll")]
static extern bool DestroyWindow(IntPtr hWnd);

De todas formas me da error

Saludos

Asier

"Alberto Poblacion"
escribió en el mensaje de noticias
news:
"Asier" wrote in message
news:
Tengo un form abierto (Form1) y desde el quiero que al pinchar un boton
se cierre el otro form (Form2) que tengo abierto. Del Form2 tengo su
handle en formato IntPtr.

Alguna idea??



Podrías llamar a la API mediante P/Invoke:

[DllImport("user32.dll")]
static extern bool CloseWindow(IntPtr hWnd);





Respuesta Responder a este mensaje
#4 Asier
03/11/2007 - 17:47 | Informe spam
Hola

Con el SenMessage y usando WM_CLOSE me ha funcionado bien. Bueno, la única
pega es que cierra todo y no solo la pantalla que yo quiero.

alguna idea??

Asier

"RFOG" escribió en el mensaje de noticias
news:%
Si te devuelve false es que windows no puede destruir la ventana... porque
no sea realmente una o por algún otro motivo.

Deberías usar GetLastError (también de win32) que de dirá por qué no se ha
destruido... pero lo que no sé es si entre dos llamada interop se conserva
el estado (yo me imagino que no).

http://msdn2.microsoft.com/en-us/li...79360.aspx

La firma para GetLastError podría no andar muy lejos de esta:

[DllImport("kernel32.dll")]
static extern unsigned short DestroyWindow(void);

Y luego con el código de error recibido, lo puedes mirar aquí:
http://msdn2.microsoft.com/en-us/li...81381.aspx

O llamar a FormatMessage (win32) para que te de un texto coherente.

Microsoft Visual C++ MVP
==> Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
> Dios existe; pero no tiene ninguna prisa de hacerlo saber.

"Asier" wrote in message
news:
Hola,

La funcion que me dices me minimiza la pantalla, no la destruye, pero
buscando he visto que lo puedo hacer con

[DllImport("user32.dll")]
static extern bool DestroyWindow(IntPtr hWnd);

De todas formas me da error

Saludos

Asier

"Alberto Poblacion"
escribió en el mensaje de noticias
news:
"Asier" wrote in message
news:
Tengo un form abierto (Form1) y desde el quiero que al pinchar un boton
se cierre el otro form (Form2) que tengo abierto. Del Form2 tengo su
handle en formato IntPtr.

Alguna idea??



Podrías llamar a la API mediante P/Invoke:

[DllImport("user32.dll")]
static extern bool CloseWindow(IntPtr hWnd);









Respuesta Responder a este mensaje
#5 RFOG
03/11/2007 - 18:01 | Informe spam
Pues entonces ese handle de ventana o pertenece a la ventana principal del
programa o es la instancia de la aplicación.

Microsoft Visual C++ MVP
==Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Dios existe; pero no tiene ninguna prisa de hacerlo saber.

"Asier" wrote in message
news:
Hola

Con el SenMessage y usando WM_CLOSE me ha funcionado bien. Bueno, la única
pega es que cierra todo y no solo la pantalla que yo quiero.

alguna idea??

Asier

"RFOG" escribió en el mensaje de
noticias news:%
Si te devuelve false es que windows no puede destruir la ventana...
porque no sea realmente una o por algún otro motivo.

Deberías usar GetLastError (también de win32) que de dirá por qué no se
ha destruido... pero lo que no sé es si entre dos llamada interop se
conserva el estado (yo me imagino que no).

http://msdn2.microsoft.com/en-us/li...79360.aspx

La firma para GetLastError podría no andar muy lejos de esta:

[DllImport("kernel32.dll")]
static extern unsigned short DestroyWindow(void);

Y luego con el código de error recibido, lo puedes mirar aquí:
http://msdn2.microsoft.com/en-us/li...81381.aspx

O llamar a FormatMessage (win32) para que te de un texto coherente.

Microsoft Visual C++ MVP
==>> Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
>> Dios existe; pero no tiene ninguna prisa de hacerlo saber.

"Asier" wrote in message
news:
Hola,

La funcion que me dices me minimiza la pantalla, no la destruye, pero
buscando he visto que lo puedo hacer con

[DllImport("user32.dll")]
static extern bool DestroyWindow(IntPtr hWnd);

De todas formas me da error

Saludos

Asier

"Alberto Poblacion"
escribió en el mensaje de noticias
news:
"Asier" wrote in message
news:
Tengo un form abierto (Form1) y desde el quiero que al pinchar un
boton se cierre el otro form (Form2) que tengo abierto. Del Form2
tengo su handle en formato IntPtr.

Alguna idea??



Podrías llamar a la API mediante P/Invoke:

[DllImport("user32.dll")]
static extern bool CloseWindow(IntPtr hWnd);












email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida