Page 1 sur 1

Procédure pour afficher les WM_***** des messages window

Publié : dim. 20/juil./2008 18:32
par nico
J'utilise ce code pour connaitre quel évènement intervient lors de certaines actions sur les gadgets ou fenêtres, utile pour comprendre ce qui se passe et intervenir sur le message qui nous intéresse.

Une liste non exhaustive des messages window qui permettra de faire la correspondance entre la valeur numérique et le message WM_**** associé que l'on pourra mettre à jour.

Le fichier "Event_View.pb":

Code : Tout sélectionner

Global Event_View.s, NoEvent_View.s

Event_View + "WM_ACTIVATE               0006"
Event_View + "WM_ACTIVATEAPP            001C"
Event_View + "WM_AFXFIRST               0360"
Event_View + "WM_AFXLAST                037F"
Event_View + "WM_APP                    8000"
Event_View + "WM_APPCOMMAND             0319"
Event_View + "WM_ASKCBFORMATNAME        030C"
Event_View + "WM_CANCELJOURNAL          004B"
Event_View + "WM_CANCELMODE             01F"
Event_View + "WM_CAPTURECHANGED         0215"
Event_View + "WM_CHANGECBCHAIN          030D"
Event_View + "WM_CHANGEUISTATE          0127"
Event_View + "WM_CHAR                   0102"
Event_View + "WM_CHARTOITEM             02F"
Event_View + "WM_CHILDACTIVATE          0022"
Event_View + "WM_CLEAR                  0303"
Event_View + "WM_CLOSE                  0010"
Event_View + "WM_COMMAND                0111"
Event_View + "WM_COMMNOTIFY             0044"
Event_View + "WM_COMPACTING             0041"
Event_View + "WM_COMPAREITEM            0039"
Event_View + "WM_CONTEXTMENU            007B"
Event_View + "WM_CONVERTREQUEST         010A"
Event_View + "WM_CONVERTREQUESTEX       0108"
Event_View + "WM_CONVERTRESULT          010B"
Event_View + "WM_COPY                   0301"
Event_View + "WM_COPYDATA               004A"
Event_View + "WM_CREATE                 0001"
Event_View + "WM_CTLCOLOR               0019"
Event_View + "WM_CTLCOLORBTN            0135"
Event_View + "WM_CTLCOLORDLG            0136"
Event_View + "WM_CTLCOLOREDIT           0133"
Event_View + "WM_CTLCOLORLISTBOX        0134"
Event_View + "WM_CTLCOLORMSGBOX         0132"
Event_View + "WM_CTLCOLORSCROLLBAR      0137"
Event_View + "WM_CTLCOLORSTATIC         0138"
Event_View + "WM_CUT                    0300"
Event_View + "WM_DDE_ACK                03E4"
Event_View + "WM_DDE_ADVISE             03E2"
Event_View + "WM_DDE_DATA               03E5"
Event_View + "WM_DDE_EXECUTE            03E8"
Event_View + "WM_DDE_FIRST              03E0"
Event_View + "WM_DDE_LAST               03E8"
Event_View + "WM_DDE_POKE               03E7"
Event_View + "WM_DDE_REQUEST            03E6"
Event_View + "WM_DDE_TERMINATE          03E1"
Event_View + "WM_DDE_UNADVISE           03E3"
Event_View + "WM_DEADCHAR               0103"
Event_View + "WM_DELETEITEM             002D"
Event_View + "WM_DESTROY                0002"
Event_View + "WM_DESTROYCLIPBOARD       0307"
Event_View + "WM_DEVICECHANGE           0219"
Event_View + "WM_DEVMODECHANGE          001B"
Event_View + "WM_DISPLAYCHANGE          007E"
Event_View + "WM_DRAWCLIPBOARD          0308"
Event_View + "WM_DRAWITEM               002B"
Event_View + "WM_DROPFILES              0233"
Event_View + "WM_ENABLE                 000A"
Event_View + "WM_ENDSESSION             0016"
Event_View + "WM_ENTERIDLE              0121"
Event_View + "WM_ENTERMENULOOP          0211"
Event_View + "WM_ENTERSIZEMOVE          0231"
Event_View + "WM_ERASEBKGND             0014"
Event_View + "WM_EXITMENULOOP           0212"
Event_View + "WM_EXITSIZEMOVE           0232"
Event_View + "WM_FONTCHANGE             001D"
Event_View + "WM_FORWARDMSG             037F"
Event_View + "WM_GETDLGCODE             0087"
Event_View + "WM_GETFONT                0031"
Event_View + "WM_GETHOTKEY              0033"
Event_View + "WM_GETICON                007F"
Event_View + "WM_GETMINMAXINFO          0024"
Event_View + "WM_GETOBJECT              003D"
Event_View + "WM_GETTEXT                000D"
Event_View + "WM_GETTEXTLENGTH          000E"
Event_View + "WM_HANDHELDFIRST          0358"
Event_View + "WM_HANDHELDLAST           035F"
Event_View + "WM_HELP                   0053"
Event_View + "WM_HOTKEY                 0312"
Event_View + "WM_HSCROLL                0114"
Event_View + "WM_HSCROLLCLIPBOARD       030E"
Event_View + "WM_ICONERASEBKGND         0027"
Event_View + "WM_IME_CHAR               0286"
Event_View + "WM_IME_COMPOSITION        010F"
Event_View + "WM_IME_COMPOSITIONFULL    0284"
Event_View + "WM_IME_CONTROL            0283"
Event_View + "WM_IME_ENDCOMPOSITION     010E"
Event_View + "WM_IME_KEYDOWN            0290"
Event_View + "WM_IME_KEYLAST            010F"
Event_View + "WM_IME_KEYUP              0291"
Event_View + "WM_IME_NOTIFY             0282"
Event_View + "WM_IME_REPORT             0280"
Event_View + "WM_IME_REQUEST            0288"
Event_View + "WM_IME_SELECT             0285"
Event_View + "WM_IME_SETCONTEXT         0281"
Event_View + "WM_IME_STARTCOMPOSITION   010D"
Event_View + "WM_IMEKEYDOWN             0290"
Event_View + "WM_IMEKEYUP               0291"
Event_View + "WM_INITDIALOG             0110"
Event_View + "WM_INITMENU               0116"
Event_View + "WM_INITMENUPOPUP          0117"
Event_View + "WM_INPUTLANGCHANGE        0051"
Event_View + "WM_INPUTLANGCHANGEREQUEST 0050"
Event_View + "WM_INTERIM                010C"
Event_View + "WM_KEYDOWN                0100"
;Event_View + "WM_KEYFIRST               0100" idem que WM_KEYDOWN ?
Event_View + "WM_KEYLAST                0108"
Event_View + "WM_KEYUP                  0101"
Event_View + "WM_KILLFOCUS              0008"
Event_View + "WM_LBUTTONDBLCLK          0203"
Event_View + "WM_LBUTTONDOWN            0201"
Event_View + "WM_LBUTTONUP              0202"
Event_View + "WM_MBUTTONDBLCLK          0209"
Event_View + "WM_MBUTTONDOWN            0207"
Event_View + "WM_MBUTTONUP              0208"
Event_View + "WM_MDIACTIVATE            0222"
Event_View + "WM_MDICASCADE             0227"
Event_View + "WM_MDICREATE              0220"
Event_View + "WM_MDIDESTROY             0221"
Event_View + "WM_MDIGETACTIVE           0229"
Event_View + "WM_MDIICONARRANGE         0228"
Event_View + "WM_MDIMAXIMIZE            0225"
Event_View + "WM_MDINEXT                0224"
Event_View + "WM_MDIREFRESHMENU         0234"
Event_View + "WM_MDIRESTORE             0223"
Event_View + "WM_MDISETMENU             0230"
Event_View + "WM_MDITILE                0226"
Event_View + "WM_MEASUREITEM            002C"
Event_View + "WM_MENUCHAR               0120"
Event_View + "WM_MENUCOMMAND            0126"
Event_View + "WM_MENUDRAG               0123"
Event_View + "WM_MENUGETOBJECT          0124"
Event_View + "WM_MENURBUTTONUP          0122"
Event_View + "WM_MENUSELECT             011F"
Event_View + "WM_MOUSEACTIVATE          0021"
;Event_View + "WM_MOUSEFIRST             0200" idem que WM_MOUSEMOVE ?
Event_View + "WM_MOUSEHOVER             02A1"
Event_View + "WM_MOUSELAST              0209"
Event_View + "WM_MOUSELEAVE             02A3"
Event_View + "WM_MOUSEMOVE              0200"
Event_View + "WM_MOUSEWHEEL             020A"
Event_View + "WM_MOVE                   0003"
Event_View + "WM_MOVING                 0216"
Event_View + "WM_NCACTIVATE             0086"
Event_View + "WM_NCCALCSIZE             0083"
Event_View + "WM_NCCREATE               0081"
Event_View + "WM_NCDESTROY              0082"
Event_View + "WM_NCHITTEST              0084"
Event_View + "WM_NCLBUTTONDBLCLK        00A3"
Event_View + "WM_NCLBUTTONDOWN          00A1"
Event_View + "WM_NCLBUTTONUP            00A2"
Event_View + "WM_NCMBUTTONDBLCLK        00A9"
Event_View + "WM_NCMBUTTONDOWN          00A7"
Event_View + "WM_NCMBUTTONUP            00A8"
Event_View + "WM_NCMOUSEHOVER           02A0"
Event_View + "WM_NCMOUSELEAVE           02A2"
Event_View + "WM_NCPAINT                0085"
Event_View + "WM_NCRBUTTONDBLCLK        00A6"
Event_View + "WM_NCRBUTTONDOWN          00A4"
Event_View + "WM_NCRBUTTONUP            00A5"
Event_View + "WM_NCXBUTTONDBLCLK        00AD"
Event_View + "WM_NCXBUTTONDOWN          00AB"
Event_View + "WM_NCXBUTTONUP            00AC"
Event_View + "WM_NEXTDLGCTL             0028"
Event_View + "WM_NEXTMENU               0213"
Event_View + "WM_NOTIFY                 004E"
Event_View + "WM_NOTIFYFORMAT           0055"
Event_View + "WM_NULL                   0000"
Event_View + "WM_OTHERWINDOWCREATED     0042"
Event_View + "WM_OTHERWINDOWDESTROYED   0043"
Event_View + "WM_PAINT                  000F"
Event_View + "WM_PAINTCLIPBOARD         0309"
Event_View + "WM_PAINTICON              0026"
Event_View + "WM_PALETTECHANGED         0311"
Event_View + "WM_PALETTEISCHANGING      0310"
Event_View + "WM_PARENTNOTIFY           0210"
Event_View + "WM_PASTE                  0302"
Event_View + "WM_PENWINFIRST            0380"
Event_View + "WM_PENWINLAST             038F"
Event_View + "WM_POWER                  0048"
Event_View + "WM_POWERBROADCAST         0218"
Event_View + "WM_PRINT                  0317"
Event_View + "WM_PRINTCLIENT            0318"
Event_View + "WM_QUERYDRAGICON          0037"
Event_View + "WM_QUERYENDSESSION        0011"
Event_View + "WM_QUERYNEWPALETTE        030F"
Event_View + "WM_QUERYOPEN              0013"
Event_View + "WM_QUERYUISTATE           0129"
Event_View + "WM_QUEUESYNC              0023"
Event_View + "WM_QUIT                   0012"
Event_View + "WM_RASDIALEVENT           CCCD"
Event_View + "WM_RBUTTONDBLCLK          0206"
Event_View + "WM_RBUTTONDOWN            0204"
Event_View + "WM_RBUTTONUP              0205"
Event_View + "WM_RENDERALLFORMATS       0306"
Event_View + "WM_RENDERFORMAT           0305"
Event_View + "WM_SETCURSOR              0020"
Event_View + "WM_SETFOCUS               0007"
Event_View + "WM_SETFONT                0030"
Event_View + "WM_SETHOTKEY              0032"
Event_View + "WM_SETICON                0080"
Event_View + "WM_SETREDRAW              000B"
Event_View + "WM_SETTEXT                000C"
Event_View + "WM_SHOWWINDOW             0018"
Event_View + "WM_SIZE                   0005"
Event_View + "WM_SIZECLIPBOARD          030B"
Event_View + "WM_SIZING                 0214"
Event_View + "WM_SPOOLERSTATUS          002A"
Event_View + "WM_STYLECHANGED           007D"
Event_View + "WM_STYLECHANGING          007C"
Event_View + "WM_SYNCPAINT              0088"
Event_View + "WM_SYSCHAR                0106"
Event_View + "WM_SYSCOLORCHANGE         0015"
Event_View + "WM_SYSCOMMAND             0112"
Event_View + "WM_SYSDEADCHAR            0107"
Event_View + "WM_SYSKEYDOWN             0104"
Event_View + "WM_SYSKEYUP               0105"
Event_View + "WM_TCARD                  0052"
Event_View + "WM_TIMECHANGE             001E"
Event_View + "WM_TIMER                  0113"
Event_View + "WM_UNDO                   0304"
Event_View + "WM_UNINITMENUPOPUP        0125"
Event_View + "WM_UPDATEUISTATE          0128"
Event_View + "WM_USER                   0400"
Event_View + "WM_USERCHANGED            0054"
Event_View + "WM_VKEYTOITEM             002E"
Event_View + "WM_VSCROLL                0115"
Event_View + "WM_VSCROLLCLIPBOARD       030A"
Event_View + "WM_WINDOWPOSCHANGED       0047"
Event_View + "WM_WINDOWPOSCHANGING      0046"
Event_View + "WM_WININICHANGE           001A"
Event_View + "WM_WNT_CONVERTREQUESTEX   0109"
Event_View + "WM_XBUTTONDBLCLK          020D"
Event_View + "WM_XBUTTONDOWN            020B"
Event_View + "WM_XBUTTONUP              020C"
Procedure RemoveEvent(RemoveMessage.s)
    NoEvent_View = NoEvent_View + RemoveMessage + " "
EndProcedure

Procedure.l ViewEvent(Number.l)
    Protected Message.s, NumberHex.s
    
    NumberHex = RSet(Hex(number), 4, "0")
    PositionDepart = FindString(Event_View, NumberHex, 1)
    If PositionDepart
		Message = Mid(Event_View, PositionDepart-26, 25)
		Message = RTrim(Message)
		If FindString(NoEvent_View, Message, 1) = 0
			Debug Message
			ProcedureReturn 1
		Else
			ProcedureReturn 0
		EndIf
    EndIf
    Debug "Message Inconnu= " + NumberHex
    ProcedureReturn 1
EndProcedure

Un code pour tester:

Code : Tout sélectionner

CompilerIf #PB_Compiler_Debugger
	IncludeFile : "Event_View.pb"
CompilerEndIf

Procedure WinCallback(hWnd, uMsg, wParam, lParam)
	
	CompilerIf #PB_Compiler_Debugger
		ViewEvent(uMsg)
	CompilerEndIf
	
	If uMsg = #WM_SIZE
		Select wParam
			Case #SIZE_MINIMIZED
				Debug "La fenêtre est minimisée"
			Case #SIZE_RESTORED
				Debug "La fenêtre est rétablie"
			Case #SIZE_MAXIMIZED
				Debug "La fenêtre est agrandie"
		EndSelect
	EndIf
	
	ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0, 0, 0, 200, 100, "Messages", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
	
	CompilerIf #PB_Compiler_Debugger
		; Cette fonction permet de supprimer de notre liste certains messages
		; que l'on connait ou qui reviennent trop souvent
		RemoveEvent("WM_MOUSEMOVE WM_NCMOUSEMOVE WM_SETCURSOR")
	CompilerEndIf
	
	SetWindowCallback(@WinCallback()) 
	
	Repeat
		Select WaitWindowEvent()
			Case #PB_Event_CloseWindow
				End
		EndSelect
	ForEver
	
EndIf

Publié : lun. 21/juil./2008 9:51
par Kwai chang caine
Super utile comme code

Merci NICO 8)

Publié : lun. 21/juil./2008 11:45
par nico
J'ai tardé à faire ce code, avant je me tapais toute la liste des messages sur ApiViewer à la recherche de la valeur hexa, c'était moyen. :roll:

D'ailleurs dès que je peux je mettrais à jour cette liste justement par rapport à ApiViewer.

Publié : lun. 21/juil./2008 12:47
par Kwai chang caine
C'est deja un sacré boulot 8)

Quand on voit la quantité de constantes, Api, structures, etc ... qui existent dans windows, on a une petite idée de ce que FRED et ses amis on pu faire les soirs au coin du feu depuis quelques années, pour toutes ou presque, les incorporer dans PB 8O

Heureusement qu'il y a des gens comme vous, pour faciliter la vie des gens comme moi 8)

Publié : lun. 21/juil./2008 17:57
par nico
Voilou, liste des messages mise à jour.

Publié : mar. 22/juil./2008 20:31
par Kwai chang caine
Encore merci 8)