Menu Dynamique - Utilisation API setwindowlong

cs_cricri95 Messages postés 34 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 6 avril 2012 - 19 avril 2006 à 09:39
cs_cricri95 Messages postés 34 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 6 avril 2012 - 19 avril 2006 à 11:37
Bonjour, Voila j'ai créé des menus dynamiquement à partir d'une base de données (en Visual Basic 6).
Je
gère les clicks sur les menus deroulants avec setwindowlong mais le
problème est en mode deboggage qui est pratiquement impossible si cette
API "setwindowlong" est lancé.
(Point Arret VB fait planter tout !!!).

Alors quelques explications ....

Dans mon MDIForm_Load, A partir d'une base de donnees j'insere mes
menus principaux avec la commande "Rec = InsertMenu(...)" et ensuite
des menus popup (si je clique sur les menus principaux) grace a la
commande "retval = InsertMenuItem(...)".

Ensuite pour
declencher les clicks sur ces menus nouvellement creés je lance apres
la construction de tous les menus la commande suivante :
"trueWndProc = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WindowProcMenu)"

Et WindowProcMenu est de la forme :
'*************************************************************
Public Function WindowProcMenu(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

On Error GoTo FinSub

If uMsg = WM_COMMAND Then
Select Case wParam
Gestion clic utilisateur
end select
end if

WindowProcMenu = CallWindowProc(trueWndProc, hwnd, uMsg, wParam, lParam)
'****************************************************************
Voila !!!!

Mais le probleme est que le deboggage est impossible (enfin le point
d'arret fait planter toute l'appli!!!) et de plus dans certains cas
l'acces au code est impossible sur un point d'arret.

Si vous avez une idée, merci de me la faire parvenir .....
Merci d'avance bonne journée

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 avril 2006 à 10:03
As-tu lu mon message précédent où je te conseillais d'aller voir ma source de création de menu dynamique qui ne fait pas appel à un adressof (c'est sûrement lui qui fait tout planter en mode debug !) ???

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
0
cs_cricri95 Messages postés 34 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 6 avril 2012
19 avril 2006 à 10:42
Oui et j'avais répondu que ça marchait peut etre quandtu faisais que des menus popup mais pas avec des menus fixes rattache au MDIFORM.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 avril 2006 à 10:58
arf, oui, exact, j'avais pas vu ta réponse.

Donc non je vois pas trop comment tu pourrais faire pour un MDI_FORM ! à mois d'intercepter l'interruption de ton prog par subclassing lorsque VB debugge, il doit bien lui envoyer un message je pense, et à ce moment là, remettre le menu d'origine...

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
0
cs_cricri95 Messages postés 34 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 6 avril 2012
19 avril 2006 à 11:37
Pas de problème ...
Je vais essayer de faire quelquechose comme ça ou sinon activé ou désactivé mon setwindowlong en debuggage respectivement qd je clique sur mon menu et qd j'ouvre mon écran.

Mais je n'ai pas de moyen de récupérer le clic sur le menu je ne sais pas l'intercepter et puis est-ce possible avec des menus dynamiques !!!!
0
Rejoignez-nous