Bonjonr a tous.
Je vous explique ce que je voudrais faire.
Je voudrais changer les caracteristiques du zones de saisies par l'intermédiaire d'un bouton. Pour modifier une zone de saisie, en READONLY, ou le remettre en ECRITURE.
Donc voila, ce que j'ai fait
-------------------------------------------------------------------------------
rsrc.rc
#include "\masm32\include\resource.h"
LectureEcriture DIALOGEX 0, 0, 190, 55
STYLE DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Lecture - Ecriture"
FONT 8, "MS Sans Serif"
BEGIN
PUSHBUTTON "&Ecriture",500,10,30,50,14,0,WS_EX_STATICEDGE
PUSHBUTTON "&Lecture",502,70,30,50,14,0,WS_EX_STATICEDGE
PUSHBUTTON "&Quitter",501,130,30,50,14,0,WS_EX_STATICEDGE
END
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
Saisie.asm
.686
.mmx
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
include createzone.asm
assume fs:flat
WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
.data
LECTURE equ 500
QUITTER equ 501
ECRITURE equ 502
hWnd dd 0
dlgname db "LectureEcriture",0
Zero db 0
.code
start:
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke DialogBoxParam,hInstance,ADDR dlgname,0,ADDR WndProc,0
invoke ExitProcess,eax
WndProc proc hWin :DWORD,
uMsg :DWORD,
wParam :DWORD,
lParam :DWORD
.if uMsg == WM_INITDIALOG
mov eax, hWin
mov hWnd, eax
invoke EditEcriture, addr Zero, 10,10,180,25, hWnd,700
.elseif uMsg == WM_COMMAND
.if wParam == ECRITURE
invoke EditLecture, addr Zero, 10,10,180,25, hWnd,700
.elseif wParam == LECTURE
invoke EditEcriture, addr Zero, 10,10,180,25, hWnd,700
.elseif wParam == QUITTER
invoke EndDialog,hWin,0
.endif
.elseif uMsg == WM_CLOSE
invoke EndDialog,hWin,0
.endif
Exit: xor eax, eax
ret
WndProc endp
end start
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
createzone.asm
EditLecture PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
EditEcriture PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
.data
EditClass db "EDIT",0
.data?
hInstance dd ?
.code
EditEcriture proc szMsg:DWORD,a:DWORD,b:DWORD,
wd:DWORD,ht:DWORD,hParent:DWORD,ID:DWORD
invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR EditClass,szMsg,
WS_VISIBLE or WS_CHILDWINDOW or \
ES_AUTOHSCROLL or ES_NOHIDESEL,
a,b,wd,ht,hParent,ID,hInstance,NULL
ret
EditEcriture endp
EditLecture proc szMsg:DWORD,a:DWORD,b:DWORD,
wd:DWORD,ht:DWORD,hParent:DWORD,ID:DWORD
invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR EditClass,szMsg,
WS_CHILDWINDOW or WS_VISIBLE or \
ES_AUTOHSCROLL or ES_NOHIDESEL or \
ES_READONLY,
a,b,wd,ht,hParent,ID,hInstance,NULL
ret
EditLecture endp
--------------------------------------------------------------------------------
J'aurais penser que ça marcherait, car viuellement, on voit bien passer la zone de saise en READONLY lorsqu'on clique sur ECRITURE, mais si on essaie d'ecrire dans cette zone, on le peut quand meme. Meme si celle-ci a l'air d'être en READONLY.
Si quelqu'un peut m'expliquer pourquoi, et me dire comment changer une propriété de zone de saisie.
Merci d'avance.