Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » ALT + F4 = WM_???

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
23.03.2004, 01:06 Uhr
~toxic
Gast


so, habs gerade ausprobiert... und siehe da ! es ist keine WM_ sondern eine SC_ ( iss ja auch logisch... )

Code:
// begin_r_winuser
/*
* System Menu Command Values
*/
#define SC_SIZE         0xF000
#define SC_MOVE         0xF010
#define SC_MINIMIZE     0xF020
#define SC_MAXIMIZE     0xF030
#define SC_NEXTWINDOW   0xF040
#define SC_PREVWINDOW   0xF050
#define SC_CLOSE        0xF060  // <--- Da isse !
#define SC_VSCROLL      0xF070
#define SC_HSCROLL      0xF080
#define SC_MOUSEMENU    0xF090
#define SC_KEYMENU      0xF100
#define SC_ARRANGE      0xF110
#define SC_RESTORE      0xF120
#define SC_TASKLIST     0xF130
#define SC_SCREENSAVE   0xF140
#define SC_HOTKEY       0xF150
#if(WINVER >= 0x0400)
#define SC_DEFAULT      0xF160
#define SC_MONITORPOWER 0xF170
#define SC_CONTEXTHELP  0xF180
#define SC_SEPARATOR    0xF00F
#endif /* WINVER >= 0x0400 */

jetzt brauchst die nur noch abfangen und fertig...

C++:
void CDeinDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
     if ( nID == SC_CLOSE )
     {
          MessageBox(" Ha Ha !!! ALT+F4 geht nicht !!! ", 0, MB_OK | MB_ICONINFORMATION);
     }

     CDialog::OnSysCommand(nID, lParam);
}

--
gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
24.03.2004, 19:56 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


hi,

rein theoretisch (also ohne das ich jemals selbst gemacht hätte) hast du dafür 2 möglichkeiten.

1. Du fägst wie bereits erwähnt die Nachricht ab, bevor sie an deine Window Procedure weitergeleitet wird. Das sollte ind deiner Nachrichtenschleife ungefähr so funktioieren:

C++:
while(GetMessage(&Msg,0,0,0))
{
   if (Msg.message != SC_CLOSE)
   {
      TranslateMessage(&Msg);
      DispatchMessage(&Msg);
   }
}



2. Wenn du ALT+F4 nicht zulassen willst, willst du ja bestimmt auch nicht das mann auf das X in der rechten oberen Ecke drücken kann. Dann kannst du einfach WM_CLOSE abfrangen und da deinen Dialog einfach nicht beenden oder das machen was auch immer du machen willst.

Gruß
Guybrush
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
26.03.2004, 12:02 Uhr
mirrow



Danke Leute für die Vorschläge.

Ich habs jetzt die Lösung:

while(GetMessage(&Msg,0,0,0))
{
if (Msg.wParam != SC_CLOSE)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
}

so wird die ALTF4-Message nicht weitergeleitet.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: