Page 1 sur 1
[..] GuiRegisterMsg
Posté : dim. 14 déc. 2014 17:49
par Jeco
Bonjour voila un bout de code
► Afficher le texte
Code : Tout sélectionner
Func WM_NOTIFY($hWnd, $iMsg, $iWparam, $iLparam)
#forceref $hWnd, $iMsg, $iWparam
Local $hWndFrom, $iCode, $tNMHDR, $tEnLink, $cpMin, $cpMax, $tMsgFilter
$tNMHDR = DllStructCreate($tagNMHDR, $iLparam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iCode = DllStructGetData($tNMHDR, "Code")
For $nb=0 to UBound($List1)-1
Switch $hWndFrom
Case $List1[$nb]
Select
Case $iCode = $EN_LINK
$tMsgFilter = DllStructCreate($tagMSGFILTER, $iLparam)
If DllStructGetData($tMsgFilter, "msg") = $WM_LBUTTONUP Then
$tEnLink = DllStructCreate($tagENLINK, $iLparam)
$cpMin = DllStructGetData($tEnLink, "cpMin")
$cpMax = DllStructGetData($tEnLink, "cpMax")
Normalement il récupère le mot pressé sur un RichEdit, tous fonctionne mais lorsque je le compile $tMsgFilter ne vaut plus rien et sa ne fonctionne pas et je ne sais pas comment empecher ça. Est ce que l'on peut trouver une alternative ou est ce qu'il n'y a rien a faire ?
Re: [..] GuiRegisterMsg
Posté : dim. 14 déc. 2014 22:03
par TommyDDR
Merci de mettre un titre plus explicite ainsi que de fournir un code testable pour la reproduction de votre problème.
Re: [..] GuiRegisterMsg
Posté : lun. 15 déc. 2014 06:24
par Jeco
je peux pas mettre de test car le code fait plus de 600 lignes et pour le tester il le faut en entier
Pour le titre je vais voir pour arranger ça
Mais pour le tester il suffit de faire un rich edit avec un URL dedans et de programmer pour que quand on clic dessus un message apparait
Je ferrais ce mini code dès que j'aurais le temps dsl
Re: [..] GuiRegisterMsg
Posté : lun. 15 déc. 2014 11:16
par TommyDDR
Oui, je demande juste un code testable, ce n'est pas contre vous mais vous n'êtes pas le seul à demander de l'aide, alors les sujets qui ne possèdent pas de code testable directement passent souvent "à la trappe" du coté de ceux qui veulent aider mais qui n'ont pas beaucoup de temps.
Merci, j'attends votre code

Re: [..] GuiRegisterMsg
Posté : mar. 16 déc. 2014 18:34
par Jeco
Oui je m'excuse pour ça j'ai du faire ça en vitesse j'ai pas pensé à mettre un code
Voila un exemple
► Afficher le texte
Code : Tout sélectionner
#AutoIt3Wrapper_Au3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiRichEdit.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
HotKeySet("+!R", "_ToggleReadOnly") ;Shift+Alt+r - Toggle read only
Opt('MustDeclareVars', 1)
Global $hRichEdit
Global $Header = "{\rtf1\ansi\deff0\readprot\annotprot{\fonttbl {\f0 Normal;}}" ; Courier or New Times New Roman or roman or Times New Roman Greek
$Header &= "{\colortbl;\red0\green255\blue0;\red170\green0\blue0;\red255\green0\blue0;\red255\green255\blue255;\red0\green0\blue255;}"
Main()
Func Main()
Local $hGui, $iMsg
$hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, 4) & ")", 320, 350, -1, -1)
$hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a \cf1 test\cf0 .\line ", 10, 10, 300, 220, _
BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL, $WS_HSCROLL, $ES_AUTOHSCROLL, $ES_READONLY))
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
_GUICtrlRichEdit_SetEventMask($hRichEdit, $ENM_LINK)
_GUICtrlRichEdit_AutoDetectURL($hRichEdit, True)
_GUICtrlRichEdit_AppendText($hRichEdit, @CR & "\i\b <a href='http://www.autoitscript.com\i0\line' class='bbc_url' title=''>http://www.autoitscript.com\i0\line</a> ")
_GUICtrlRichEdit_AppendText($hRichEdit, @CR & "<a href='http://www.google.com\b0' class='bbc_url' title='External link' rel='nofollow external'>http://www.google.com\b0</a> \line ")
_GUICtrlRichEdit_AppendText($hRichEdit, @CR & '{\field{\*\fldinst{HYPERLINK "C:\"}}{\fldrslt{\ul\cf5\b c:\\ [view directory]}}}\b0\f0\par ')
_GUICtrlRichEdit_AppendText($hRichEdit, @CR & '{\field{\*\fldinst{HYPERLINK "Calc.exe"}}{\fldrslt{\ul\cf5\b Run Calculator}}}\b0\f0\par\par ')
_GUICtrlRichEdit_AppendText($hRichEdit, @CR & "Click on a \highlight2\cf4\b hyperlink\b0\cf0\highlight0 .")
_GUICtrlRichEdit_SetText($hRichEdit, $Header & "\fs24 " & _GUICtrlRichEdit_GetText($hRichEdit) & "\line ")
;\i\b - italics, bold; \cf4 - color front (font color) forth color in color table 1; \fs24 - font size 24 half points = 12 point characters.
; All need a trailing space.
;_GUICtrlRichEdit_SetZoom($hRichEdit, 250)
GUISetState()
While True
$iMsg = GUIGetMsg()
Select
Case $iMsg = $GUI_EVENT_CLOSE
_GUICtrlRichEdit_Destroy($hRichEdit)
Exit
EndSelect
WEnd
EndFunc ;==>Main
Func WM_NOTIFY($hWnd, $iMsg, $iWparam, $iLparam)
#forceref $hWnd, $iMsg, $iWparam
Local $hWndFrom, $iCode, $tNMHDR, $tEnLink, $cpMin, $cpMax, $tMsgFilter, $sLink
$tNMHDR = DllStructCreate($tagNMHDR, $iLparam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hRichEdit
Select
Case $iCode = $EN_LINK
$tMsgFilter = DllStructCreate($tagMSGFILTER, $iLparam)
If DllStructGetData($tMsgFilter, "msg") = $WM_LBUTTONUP Then
$tEnLink = DllStructCreate($tagENLINK, $iLparam)
$cpMin = DllStructGetData($tEnLink, "cpMin")
$cpMax = DllStructGetData($tEnLink, "cpMax")
$sLink = _GUICtrlRichEdit_GetTextInRange($hRichEdit, $cpMin, $cpMax)
MsgBox(0, "",$sLink, 3)
EndIf
EndSelect
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Func _ToggleReadOnly()
Static $RO = 1
If $RO <> 1 Then
ConsoleWrite("$RO = " & $RO & @LF)
$RO = 1
_GUICtrlRichEdit_SetReadOnly($hRichEdit, True)
Else
ConsoleWrite("$RO = " & $RO & @LF)
$RO = 0
_GUICtrlRichEdit_SetReadOnly($hRichEdit, False)
EndIf
EndFunc ;==>_ToggleReadOnly
Lorqu'on clic sur un hyperlink cela fonctionne mais lorsque qu'on compile le programme et qu'on ferait la manip ça ne fonctionne plus
PS:
► Afficher le texte
J'ai récuperer ce code vite fait car j'ai pas eu le temps de le faire moi même donc il y a quelque truc inutile pour l'exemple
Re: [..] GuiRegisterMsg
Posté : mar. 16 déc. 2014 19:06
par TommyDDR
Personnellement compilé ou pas, les hyperlink ne fonctionnent pas.
Re: [..] GuiRegisterMsg
Posté : mar. 16 déc. 2014 19:36
par Jeco
Ils ne doivent pas fonctionner il doit juste y avoir une msgbox
Sinon c'est pas cool comme nouvelle

Re: [..] GuiRegisterMsg
Posté : mar. 16 déc. 2014 21:23
par mikell
Chez moi les 2 seuls liens exploitables dans l'exemple fourni sont C: et Calc
Pour eux la msgbox s'affiche, et en mettant ShellExecute($sLink) à la place les liens s'ouvrent (compilé ou pas), et si je remplace (alarach) C: par l'équivalent google ça ouvre le navigateur
Code : Tout sélectionner
_GUICtrlRichEdit_AppendText($hRichEdit, @CR & '{\field{\*\fldinst{HYPERLINK "http://www.google.com"}}{\fldrslt{\ul\cf5\b Google}}}\b0\f0\par ')
Re: [..] GuiRegisterMsg
Posté : mer. 17 déc. 2014 06:29
par Jeco
Donc en fait ça dépend des ordi y en à qui fonctionne et d'autre non ?
Re: [..] GuiRegisterMsg
Posté : jeu. 18 déc. 2014 16:20
par orax
J'ai essayé sur un Windows 7 et même l'exemple de la doc de la fonction
_GUICtrlRichEdit_AutoDetectURL ne fonctionne pas.
Re: [..] GuiRegisterMsg
Posté : jeu. 18 déc. 2014 18:22
par Jeco
Comment on peut y remédier alors ?