Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Minimizar Aplicacion desde ventana Hija Showmodal (https://www.clubdelphi.com/foros/showthread.php?t=93668)

NEG1414 24-12-2018 12:45:24

Minimizar Aplicacion desde ventana Hija Showmodal
 
Buenas..


He intentado minimizar una aplicacion desde una ventana hija showmodal, con

Código:

Application->Minimize();
pero solo minimiza la hija.

¿Como puedo minimizar una aplicacion desde una ventatan hija showmodal haciendo click en el boton minimizar de la misma, y desde que evento de esta tengo que actuar?

Gracias.

escafandra 24-12-2018 17:14:33

Prueba de esta forma que te explico. Reescribe la función virtual WndProc del formulario que re verá como ShowModal.
En esta función vamos a interceptar los mensajes WM_SYSCOMMAND de forma que controlemos SW_MINIMIZE, SW_RESTORE y SC_CLOSE. Con ello obligaremos a la ventana principal de nuestra app a reaccionar momo nos interesa.



Lo siguiente es como quedaría un archivo de cabecera del formulario ShowModal
Código PHP:

//---------------------------------------------------------------------------

#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published:    // IDE-managed Components
private:
  
void __fastcall WndProc(TMessagemsg);
public:        
// User declarations
  
__fastcall TForm2(TComponentOwner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif 


Ahora te muestro la función WndProc
Código PHP:

void __fastcall TForm2::WndProc(TMessagemsg)
{
  if(
msg.Msg == WM_SYSCOMMAND){
    if(
msg.WParam == SC_MINIMIZE)
      
ShowWindow(Application->MainForm->HandleSW_MINIMIZE);
    
    if(
msg.WParam == SC_RESTORE || msg.WParam == SC_CLOSE){
      
ShowWindow(Application->MainForm->HandleSW_RESTORE);
      
SetWindowPos(HandleApplication->MainForm->Handle0,0,0,0SWP_NOSIZE SWP_NOREPOSITION);
    }
  }

  
TForm::WndProc(msg);



Espero que te ayude.


Saludos.


La franja horaria es GMT +2. Ahora son las 11:08:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi