IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

inhiber alt+F4 + GdkEventkey


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut inhiber alt+F4 + GdkEventkey
    Bonjour !!

    Je développe sous windows et je cherche un moyen pour inhiber le ALT+F4 permettant de fermer les fenetres.

    Par avance merci.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Sans trop répondre à la question soit tu connectes le signal "key-press-event" de la fenêtre à un CALLBACK dans lequel tu ne fait rien soit cette combinaison de touches est piloté directement par le gestionnaire graphique, et là, point de salut il me semble

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Sans trop répondre à la question soit tu connectes le signal "key-press-event" de la fenêtre à un CALLBACK dans lequel tu ne fait rien soit cette combinaison de touches est piloté directement par le gestionnaire graphique, et là, point de salut il me semble
    Il est vrai que je n'ai pas été assez précis: je ne sais pas comment gérer les combinaisons de touches.
    J'arrive à inhiber une touche du clavier avec comme tu l'as précisé un callback sur le signal "key-press-event" mais pour une combinaison de touche je ne vois pas comment faire.

    Voici ma solution pour une touche du clavier :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
     
    gboolean
    on_Pop_Cla_key_press_event             (GtkWidget       *widget,
                                            GdkEventKey     *event,
                                            gpointer         user_data)
    {
    	gboolean val=FALSE;
     
    	switch (event->keyval){
    		/*case GDK_F4:
    			if (event->state!=0){
    				val=TRUE;
    			}
    			else{
    				val=FALSE;
    			}
    			break;*/
    		case GDK_KP_Divide:
    			val=TRUE;
    			break;
    		case GDK_KP_Decimal:
    			val=TRUE;
    			break;
    		case GDK_KP_Multiply:
    			val=TRUE;
    			break;
    		case GDK_KP_Insert:
    			val=TRUE;
    			break;
    		case GDK_KP_Add:
    			val=TRUE;
    			break;
    		case GDK_apostrophe: 
    			val=TRUE;
    			break;
    		case GDK_exclam : 
    			val=TRUE;
    			break;
    		case GDK_quotedbl : 
    			val=TRUE;
    			break;
    		case GDK_numbersign : 
    			val=TRUE;
    			break;
    		case GDK_dollar : 
    			val=TRUE;
    			break;
    		case GDK_percent : 
    			val=TRUE;
    			break;
    		case GDK_ampersand : 
    			val=TRUE;
    			break;
    		/*case GDK_quoteright : 
    			val=TRUE;
    			break;*/
    		case GDK_parenleft : 
    			val=TRUE;
    			break;
    		case GDK_parenright : 
    			val=TRUE;
    			break;
    		case GDK_asterisk  : 
    			val=TRUE;
    			break;
    		case GDK_plus  : 
    			val=TRUE;
    			break;
    		case GDK_less  : 
    			val=TRUE;
    			break;
    		case GDK_comma : 
    			val=TRUE;
    			break;
    		case GDK_slash : 
    			val=TRUE;
    			break;
    		case GDK_period : 
    			val=TRUE;
    			break;
    		case GDK_greater : 
    			val=TRUE;
    			break;
    		case GDK_question  : 
    			val=TRUE;
    			break;
    		case GDK_at : 
    			val=TRUE;
    			break;
    		case GDK_bracketleft  : 
    			val=TRUE;
    			break;
    		case GDK_backslash  : 
    			val=TRUE;
    			break;
    		case GDK_bracketright  : 
    			val=TRUE;
    			break;
    		case GDK_asciicircum   : 
    			val=TRUE;
    			break;
    		case GDK_grave   : 
    			val=TRUE;
    			break;
    		case GDK_semicolon : 
    			val=TRUE;
    			break;
    		case GDK_braceleft : 
    			val=TRUE;
    			break;
    		case GDK_bar : 
    			val=TRUE;
    			break;
    		case GDK_braceright: 
    			val=TRUE;
    			break;
    		case GDK_asciitilde: 
    			val=TRUE;
    			break;
    		case GDK_nobreakspace : 
    			val=TRUE;
    			break;
    		case GDK_exclamdown : 
    			val=TRUE;
    			break;
    		case GDK_sterling: 
    			val=TRUE;
    			break;
    		case GDK_cent: 
    			val=TRUE;
    			break;
    		case GDK_degree: 
    			val=TRUE;
    			break;
    		case GDK_acute: 
    			val=TRUE;
    			break;
    		case GDK_mu: 
    			val=TRUE;
    			break;
    		case GDK_Agrave : 
    			val=TRUE;
    			break;
    		case GDK_agrave : 
    			val=TRUE;
    			break;
    		case GDK_Aacute: 
    			val=TRUE;
    			break;
    		case GDK_Acircumflex: 
    			val=TRUE;
    			break;
    		case GDK_Ccedilla: 
    			val=TRUE;
    			break;
    		case GDK_ccedilla: 
    			val=TRUE;
    			break;
    		case GDK_Egrave : 
    			val=TRUE;
    			break;
    		case GDK_eacute : 
    			val=TRUE;
    			break;
    		case GDK_egrave : 
    			val=TRUE;
    			break;
    		case GDK_Eacute : 
    			val=TRUE;
    			break;
    		case GDK_Ecircumflex: 
    			val=TRUE;
    			break;
    		case GDK_equal: 
    			val=TRUE;
    			break;
    		case GDK_ugrave: 
    			val=TRUE;
    			break;
    		case GDK_colon: 
    			val=TRUE;
    			break;
    		case GDK_paragraph: 
    			val=TRUE;
    			break;
    		case GDK_section: 
    			val=TRUE;
    			break;
    		case GDK_twosuperior : 
    			val=TRUE;
    			break;
    		case GDK_threesuperior : 
    			val=TRUE;
    			break;
    		case GDK_plusminus : 
    			val=TRUE;
    			break;
    		case GDK_periodcentered  : 
    			val=TRUE;
    			break;
    		case GDK_Insert  : 
    			val=TRUE;
    			break;
    		default:
    			val=FALSE;
    	}
     
    	return val;
    }

    Au début du code il y a une vague tentative de solution (en commentaire) pour le alt+F4.

    Merci de m'expliquer la marche à suivre pour les combinaisons de touche ou de me fournir un exemple sur lequel je pourrais m'appuyer.

    Cordialement.

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Ta démarche me semble être tout à fait correcte. Le seul problème est que alt+F4 est directement géré par Xwindow. Jai fait quelques tests sans grands succés. Il existe peut être un moyen de désactiver cette fonctionnalité du serveur mais j'avoue ici mon impuissance

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Ta démarche me semble être tout à fait correcte. Le seul problème est que alt+F4 est directement géré par Xwindow. Jai fait quelques tests sans grands succés. Il existe peut être un moyen de désactiver cette fonctionnalité du serveur mais j'avoue ici mon impuissance
    Si tout simplement en interceptant le signal delete-event

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Ben oui. C'était tellement évident

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut
    Citation Envoyé par gege2061 Voir le message
    Si tout simplement en interceptant le signal delete-event

    Effectivement cela était simple. je pensais juste que c'était windows qui le gérait et donc je savais pas le désactiver.

    Voici le code:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    gboolean
    on_fen_delete_event       (GtkWidget       *widget,
                                            GdkEvent        *event,
                                            gpointer         user_data)
    {
      return TRUE;
    }

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment empecher le Alt + F2 ??
    Par phoenix007 dans le forum Access
    Réponses: 12
    Dernier message: 25/08/2006, 08h52
  2. Gérer le ALT-TAB ?
    Par Magus (Dave) dans le forum DirectX
    Réponses: 15
    Dernier message: 04/01/2004, 00h43
  3. Réponses: 5
    Dernier message: 01/10/2003, 15h03
  4. Comment désactiver Ctrl+Alt+Del sous Windows XP
    Par ETOKA dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 04/06/2003, 13h34
  5. ctrl+alt+sup et W2k
    Par Lucien dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 26/05/2003, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo