Pour hooker tout ce qui se passe dans un controle, EDIT ou autre, on le sous classe.
Exemple minimaliste qui interdit le copier-coller.
HWND hNBR = 0;
WNDPROC oldFloatProc = 0;
LRESULT CALLBACK ProcEdFloat(HWND hwnd, UINT mssg, WPARAM wParam, LPARAM lParam)
{
//if(mssg == WM_CHAR) TonCodePourWM_CHAR();
if(mssg == WM_PASTE) return 0;
return CallWindowProc(oldFloatProc, hwnd, mssg, wParam, lParam);
}
INT_PTR AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
switch(mssg) {
case WM_INITDIALOG:
SetClassLongPtr(hdlg, GCLP_HICON, (LONG_PTR) LoadIcon(0, IDI_APPLICATION));
hNBR = GetDlgItem(hdlg, IDED_NBR);
SendMessage(hNBR, EM_LIMITTEXT, 23, 0);
oldFloatProc = (WNDPROC) SetWindowLongPtrA(hNBR, GWLP_WNDPROC, (LONG_PTR) ProcEdFloat);
return 1;
case WM_COMMAND:
switch(wParam) {
case IDOK:
onOK();
return 0;
case IDCANCEL: EndDialog(hdlg, 0);
}
}
return 0;
}
ciao...
BruNews, MVP VC++