Modif zone de saisie

Signaler
Messages postés
40
Date d'inscription
samedi 22 mai 2004
Statut
Membre
Dernière intervention
25 janvier 2007
-
Messages postés
40
Date d'inscription
samedi 22 mai 2004
Statut
Membre
Dernière intervention
25 janvier 2007
-
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.

1 réponse

Messages postés
40
Date d'inscription
samedi 22 mai 2004
Statut
Membre
Dernière intervention
25 janvier 2007

J'ai trouvé pourquoi ça ne marche pas, en faite, il faudrait pouvoir enlever l'ancienne zone d'édition, puis seulement en créer une nouvelle.
Pour détruire l'ancienne zone d'édition, j'ai penser à l'API
DestroyWindow, mais ça ne marche pas.
Si quelqu'un a une idée comment faire ?