• Jueves 14 de Noviembre de 2024, 17:15

Autor Tema:  Bloquer Alt-f4  (Leído 1959 veces)

betitono1

  • Miembro MUY activo
  • ***
  • Mensajes: 235
    • Ver Perfil
Bloquer Alt-f4
« en: Miércoles 4 de Febrero de 2004, 14:56 »
0
Hola que tal como puedo bloquear la tecla ALT-F4 para que no se cierre la ventana cuando se presionen estas teclas.


Saludos.

QliX=D!

  • Miembro MUY activo
  • ***
  • Mensajes: 214
    • Ver Perfil
Re: Bloquer Alt-f4
« Respuesta #1 en: Miércoles 4 de Febrero de 2004, 20:33 »
0
revisa el evento Close del Form ahí hay una variable que podes setear en un valor distinto de 0 para cancelar el cierre del formulario.


slds.
QliX=D! - From the top of Tsunami

betitono1

  • Miembro MUY activo
  • ***
  • Mensajes: 235
    • Ver Perfil
Re: Bloquer Alt-f4
« Respuesta #2 en: Jueves 5 de Febrero de 2004, 14:50 »
0
GRacias por la respuesta, una pregunta mas y para ocultar el boton de inicio y la barra de tareas como le podria hacer, y otra mas (disculpa tantas preguntas) como puedo hacer para que e l icono de mi aplicacion aparezca al lado de la hora del reloj, como el icono de quicktime, del messenger o de la misma conexion?, podrias decirme como te lo agradeceria mucho.


Saludos.

seth_los

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Bloquer Alt-f4
« Respuesta #3 en: Jueves 5 de Febrero de 2004, 15:42 »
0
es muy facil esto te servira evita cerrar la aplicacion
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
 
CanClose = false;


}


para el icono al lado del reloj usa esto
codigo en el Unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>

#include <shellapi.h>

#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  TrayMessage(NIM_ADD);
  TrayMessage(NIM_MODIFY);
}
//---------------------------------------------------------------------------

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

bool __fastcall TForm1::TrayMessage(DWORD dwMessage)
{
  NOTIFYICONDATA tnd;
  PSTR pszTip;

   tnd.cbSize          = sizeof(NOTIFYICONDATA);
   tnd.hWnd            = Handle;
   tnd.uID             = IDC_MYICON;
   tnd.uFlags          = NIF_MESSAGE | NIF_ICON | NIF_TIP;
   tnd.uCallbackMessage   = MYWM_NOTIFY;

   if (dwMessage == NIM_MODIFY)
    {
        tnd.hIcon      = (HICON)IconHandle();
        if (pszTip)
           lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip));
       else
        tnd.szTip[0] = '\0';
    }
   else
    {
        tnd.hIcon = NULL;
        tnd.szTip[0] = '\0';
    }

   return (Shell_NotifyIcon(dwMessage, &tnd));
}

HICON __fastcall TForm1::IconHandle(void)
{
 return (Image1->Picture->Icon->Handle);
}

void __fastcall TForm1::FormDestroy(TObject *Sender) {
  TrayMessage (NIM_DELETE);
}

en el Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Graphics.hpp>

#define MYWM_NOTIFY         (WM_APP+100)
#define IDC_MYICON                     1006

//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:   // IDE-managed Components
        TButton *Button1;
        TImage *Image1;
        void __fastcall FormDestroy(TObject *Sender);
private:   // User declarations

    bool __fastcall TrayMessage(DWORD dwMessage);
    HICON __fastcall IconHandle(void);

    PSTR __fastcall TipText(void);

public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

para la barra de tareas puedes hacer lo siguiente fijate las lineas que no te aparecen en la aplicacion
codigo en el Proyect1.cpp

#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{

//Agrega estas lineas
        DWORD dwExStyle = GetWindowLong(Application->Handle, GWL_EXSTYLE);
        dwExStyle |= WS_EX_TOOLWINDOW;
        SetWindowLong(Application->Handle, GWL_EXSTYLE, dwExStyle);
//Hasta aqui


        try
        {
                 Application->Initialize();
                 Application->CreateForm(__classid(TForm1), &Form1);
                 Application->Run();
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        catch (...)
        {
                 try
                 {
                         throw Exception("");
                 }
                 catch (Exception &exception)
                 {
                         Application->ShowException(&exception);
                 }
        }
        return 0;
}

_Viktor

  • Miembro MUY activo
  • ***
  • Mensajes: 271
    • Ver Perfil
    • http://AyudaCBuilder.foros.st
Re: Bloquer Alt-f4
« Respuesta #4 en: Jueves 5 de Febrero de 2004, 19:56 »
0
Cuando se refiere a ocultar la barra de tareas y el menu inicio creo que se refiere a esto:


Ocultar:

Código: Text
  1. void __fastcall TForm1::Button3Click(TObject *Sender)
  2. {
  3. ShowWindow(FindWindow(&#34;Shell_TrayWnd&#34;, NULL), SW_HIDE);
  4. int ilRetVal = 0;
  5. SystemParametersInfo(SPI_SCREENSAVERRUNNING, true, &ilRetVal, NULL);
  6. }
  7.  

Mostrar:

Código: Text
  1. void __fastcall TForm1::Button4Click(TObject *Sender)
  2. {
  3. ShowWindow(FindWindow(&#34;Shell_TrayWnd&#34;, NULL), SW_SHOW);
  4. int ilRetVal = 0;
  5. SystemParametersInfo(SPI_SCREENSAVERRUNNING, false, &ilRetVal, NULL);
  6. }
  7.  

Saludos!
_Viktor _Yañez_
"Ser inteligente no es ser mas, solo equivocarse menos y no usar visual basic"

http]