Возможно ли какинить функциями сделать чтобы в едит бох можно было вводить цифры и только некоторые буквы?
Код (Text): DlgProc PROC hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM mov eax,uMsg .if eax==WM_INITDIALOG invoke GetDlgItem,hWin,IDC_AddrArray1 mov hArray,eax invoke SendMessage,hArray,EM_LIMITTEXT,8,0 invoke GetDlgItem,hWin,IDC_ArraySize1 mov hArray,eax invoke SendMessage,hArray,EM_LIMITTEXT,8,0 invoke GetDlgItem,hWin,IDC_AddrArray2 mov hArray,eax invoke SendMessage,hArray,EM_LIMITTEXT,8,0 invoke GetDlgItem,hWin,IDC_ArraySize2 mov hArray,eax invoke SendMessage,hArray,EM_LIMITTEXT,8,0 invoke GetDlgItem,hWin,IDC_AddrArray3 mov hArray,eax invoke SendMessage,hArray,EM_LIMITTEXT,8,0 invoke GetDlgItem,hWin,IDC_ArraySize3 mov hArray,eax invoke SendMessage,hArray,EM_LIMITTEXT,8,0 invoke GetDlgItem,hWin,IDC_AddrArray4 mov hArray,eax invoke SendMessage,hArray,EM_LIMITTEXT,8,0 invoke GetDlgItem,hWin,IDC_ArraySize4 mov hArray,eax invoke SendMessage,hArray,EM_LIMITTEXT,8,0 .elseif eax==WM_COMMAND mov eax,wParam ;and eax,0FFFFh .if ax==IDC_AddrArray1 .elseif ax==IDC_ArraySize1 invoke GetDlgItemText,hWin,IDC_ArraySize1,addr StrArraySize1,8h .elseif ax==IDC_AddrArray2 invoke GetDlgItemText,hWin,IDC_AddrArray2,addr StrAddrArray2,8h .elseif ax==IDC_ArraySize2 invoke GetDlgItemText,hWin,IDC_ArraySize2,addr StrArraySize2,8h .elseif ax==IDC_AddrArray3 invoke GetDlgItemText,hWin,IDC_AddrArray3,addr StrAddrArray3,8h .elseif ax==IDC_ArraySize3 invoke GetDlgItemText,hWin,IDC_ArraySize3,addr StrArraySize3,8h .elseif ax==IDC_AddrArray4 invoke GetDlgItemText,hWin,IDC_AddrArray4,addr StrAddrArray4,8h .elseif ax==IDC_ArraySize4 invoke GetDlgItemText,hWin,IDC_ArraySize4,addr StrArraySize4,8h .endif .elseif eax==WM_CLOSE invoke EndDialog,hWin,0 .else mov eax,FALSE ret .endif mov eax,TRUE ret ret DlgProc endp Как мне в этой обработке диалога поимать WM_CHAR чтобы можно было сделать сабклассинг
Да спасибо обработка подошла. Сейчас буду пытаться понять. Вот такой вопрос а можно реализовать это через IsDialogMessage и еже сними?
Вобщем я разобрался. Только не понял одного момента: Код (Text): mov wParam,eax hex_ok: invoke GetWindowLong,[hWin],GWL_USERDATA leave xchg eax,[esp] push eax jmp [CallWindowProc] Если можно растолкуй паподробней
начиная с leave - это вместо Код (Text): invoke CallWindowProc eax,hWnd,uMsg,wParam,lParam ret (для 2к/хр даже не совсем корректно, но проблем не встречал) --- а нет, все корректно некорректно у меня было раньше (и еще проще) - я просто уже забыл... было так: Код (Text): leave jmp eax просто "SetWindowLong,eax,GWL_WNDPROC" может вернуть не адрес процедуры, а какой-то хэндл в каких-то случаях - в этом случае такая комбинация упадет.