Hook de enter sur dialogbox (win32)

Soyez le premier à donner votre avis sur cette source.

Vue 6 543 fois - Téléchargée 452 fois

Description

Le hook interdit l'emploi de touche ENTER.
Il annonce interdiction par MessageBox.
Le MessageBox est egalement sujet au hook.
Faites essai de fermeture du message par ENTER.

Source / Exemple :


#include <windows.h>
#include "resource.h"

HHOOK hhk = 0;

// HOOK LOCAL de ENTER sur boite type dialogbox ou MessageBox
LRESULT CALLBACK MsgFilterProc(int nCode, WPARAM wParam, LPARAM lParam)
{
  MSG *lpmsg;
  lpmsg = (MSG*) lParam;
  if(nCode != MSGF_DIALOGBOX) goto defRet;
  if(lpmsg->message == WM_KEYDOWN) {
    if(lpmsg->wParam == VK_RETURN) {
      MessageBox(lpmsg->hwnd, "Touche INTERDITE", "VK_RETURN", 0);
      return 1;
    }
  }
defRet:
  return (CallNextHookEx(hhk, nCode, wParam, lParam));
}

BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
  switch(mssg) {
    case WM_INITDIALOG:
      SetClassLong(hdlg, GCL_HICON, (long)LoadIcon(0, (LPCTSTR)IDI_APPLICATION));
      hhk = SetWindowsHookEx(WH_MSGFILTER, MsgFilterProc, 0, GetCurrentThreadId());
      return 1;
    case WM_COMMAND:
      switch(wParam) {
        case IDOK:
          MessageBox(hdlg, "Salut", "IDOK", 0);
          return 0;
        case IDCANCEL:
          if(hhk) UnhookWindowsHookEx(hhk);
          EndDialog(hdlg, 0);
      }
  }
  return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
  DialogBoxParam(hInstance, (LPCTSTR)IDD_APP, 0, AppDlgProc, 0);
  return 0;
}

Conclusion :


Tout dans zip.

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Messages postés
3
Date d'inscription
lundi 6 février 2006
Statut
Membre
Dernière intervention
27 avril 2016

Code clair et ca marche. Donc c'est parfait.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.