Dialog ( fenetre de log richedit )

Contenu du snippet

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

A voir également

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.