Ce code fait la gestion d'une fenetre de log
a inclure directement dans un fichier Source
2 fonctions:
logCreate(HANDLE hwParent) ; cree la boite de dialog
logAll(PSTR pString) ; envoie la chaine zero terminal dans le RichEdit
Source / Exemple :
; a inclure dans votre source asm
; logCreate(HANDLE hwParent) ; cree le dialog
; logAll(PSTR string) ; envoi la chaine string a la fenetre de log
@ EQU OFFSET
IDC_RICHEDIT1 EQU 2001
logCreate PROTO :DWORD
logAll PROTO :DWORD
; ne pas utiliser en fenetre principale
;*******************************************************************.data
;******************************************************************* azREdit db "RichEd20.dll",0
dlg01 db "LOGVIEW",0
;*******************************************************************.data?
;******************************************************************* hRLib dd ?
hwLog dd ?
;*******************************************************************.code
;*******************************************************************; PUBLIC
logCreate PROC hwParent:DWORD
invoke LoadLibrary,@ azREdit
and eax,eax
mov hRLib,eax
stc
je @F
invoke CreateDialogParam,hInstance,@ dlg01,hwParent,@ wpLog,0
clc
@@:
ret
logCreate ENDP
;*******************************************************************
logAll PROC USES EBX pStr:DWORD
;
; log send to screen
;
invoke GetDlgItem,hwLog,IDC_RICHEDIT1
mov ebx,eax
push -1
push -1
invoke SendMessage,ebx,EM_EXSETSEL,0,esp
invoke SendMessage,ebx,EM_REPLACESEL,FALSE,pStr
invoke SendMessage,ebx,EM_SCROLLCARET,0,0
invoke UpdateWindow,ebx
add esp,2*4
ret
logAll ENDP
;*******************************************************************; PRIVATE
wpLog PROC hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
mov ecx,uMsg
cmp ecx,WM_INITDIALOG
je do_INITDIALOG
cmp ecx,WM_CLOSE
je do_CLOSE
do_DEFAULT:
xor eax,eax
ret
do_INITDIALOG:
push hWin
pop hwLog
push ebx
invoke GetDlgItem,hWin,IDC_RICHEDIT1
mov ebx,eax
push -1
push 0
invoke SendMessage,ebx,EM_EXSETSEL,0,esp
invoke SendMessage,ebx,EM_REPLACESEL,FALSE,esp
invoke SendMessage,ebx,EM_SCROLLCARET,0,0
add esp,2*4
xor eax,eax
pop ebx
ret
do_CLOSE:
invoke FreeLibrary,hRLib
xor eax,eax
ret
wpLog ENDP
;*******************************************************************
;FICHIER RESSOURCE
;*******************************************************************
; dans le fichier ressource copier/coller
#include "\inc\resource.h"
#define IDC_STATIC -1
//#define LOGVIEW 2000
#define IDC_RICHEDIT1 2001
LOGVIEW DIALOG DISCARDABLE 200, 0, 500, 250
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Log"
FONT 8, "MS Sans Serif"
BEGIN
CONTROL "",IDC_RICHEDIT1,"RichEdit20A",ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL | WS_BORDER | WS_TABSTOP | WS_VSCROLL,1,1,498,248
END
Conclusion :
si quelqu'un sait comment mettre a jour l'ascenseur du RichEdit meme si la boite n'as pas le focus. -> patatalo
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.