FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Conflit entre ON_USER_EVENT et INACTIVE 0 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -29%
DYSON V8 Origin – Aspirateur balai sans fil
Voir le deal
269.99 €

 

 Conflit entre ON_USER_EVENT et INACTIVE 0

Aller en bas 
2 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Conflit entre ON_USER_EVENT et INACTIVE 0 Empty
MessageSujet: Conflit entre ON_USER_EVENT et INACTIVE 0   Conflit entre ON_USER_EVENT et INACTIVE 0 EmptyMar 12 Avr 2022 - 18:25

J'ai constaté un curieux phénomène.

La commande ON_USER_EVENT n'est pas prise en compte si un INACTIVE 0 a été émis auparavant, même si un ACTIVE 0 suit après. Aucun USER_EVENT n'est réçu...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Conflit entre ON_USER_EVENT et INACTIVE 0 Empty
MessageSujet: Re: Conflit entre ON_USER_EVENT et INACTIVE 0   Conflit entre ON_USER_EVENT et INACTIVE 0 EmptyMar 12 Avr 2022 - 19:01

J'ai testé avec la V0929i8 et la V0929i11 et ces codes:
Code:
label traite_event

inactive 0

On_User_Event traite_event

 dll_on "C:\Program Files\FreeBASIC\Mes sources\PANORAMIC dll\MaDLL.dll"
' dll_on "MaDLL.dll"
print dll_call1("USER_EVENT",handle(0))
dll_off

active 0

end

traite_event:
message "événement déclenché par DLL"+chr$(13)+chr$(10)+"USER_EVENT_WPARAM="+str$(USER_EVENT_WPARAM)+chr$(13)+chr$(10)+"USER_EVENT_LPARAM="+str$(USER_EVENT_LPARAM)
return

et

Code:
inactive 0

application_title "Test library"

label Traite_User_Event
dim wparam%,lparam%
dim titre_form$

 ' nouvelle commande utilisateur
 On_User_Event Traite_User_Event
 '
 wparam% = 12
 lparam% = 34
 titre_form$="PANORAMIC V "+version$
 SEND_EVENT_B(titre_form$, wparam%, lparam%)
' MESSAGE_SEND handle_form("PANORAMIC V "+version$),4024,wparam%, lparam%   :' commande caché, sans effet

active 0  

END
Traite_User_Event:
'  Off_User_Event  :' erreur(29) ---> Plus d'accès aux variables systèmes si "Off_User_Event"
  '
   select USER_EVENT_WPARAM
   case 12
      message "USER_EVENT_WPARAM = "+str$(USER_EVENT_WPARAM)+chr$(13)+chr$(10)+"USER_EVENT_LPARAM = "+str$(USER_EVENT_LPARAM)
   end_select
   '
'   On_User_Event Traite_User_Event
return


' SUBs
' Nouvelles commandes dlls
sub SEND_EVENT_A(form_name$,value1%,value2%)
 dim_local hndl%
   if variable("event_index%")=0
      dim event_index%
      if variable("user32%")=0 then dim user32%
      event_index%=4024 : user32%=2   :' event_index% doit toujours avoir la valeur 4024
      ' cré la commande qui permet de déclencher un évènement
      LIBRARY user32%,"user32.dll"
      command "call_user_event","SendMessageA",user32%,"IIII","stdcall"
   end_if
  '
  ' déclenche l'évènement(Attention, c'est toujours et uniquement le form 0 de l'executable en cours qui active la commande 'on_user_event'!)
  hndl%=handle_form(form_name$)
  if hndl%<>0
     call_user_event hndl%,event_index%,value1%,value2%
  else
     ' ne rien faire
  end_if    
end_sub


' commande dll classique
sub SEND_EVENT_B(form_name$,value1%,value2%)
 dim_local hndl%,ret%
  ' déclenche l'évènement(Attention, c'est toujours et uniquement le form 0 de l'executable en cours qui active la commande 'on_user_event'!)
  hndl%=handle_form(form_name$)
  if hndl%<>0
     dll_on "user32.dll"
     ret%=dll_call4("SendMessageA",hndl%,4024,value1%,value2%)
     dll_off
  else
     ' ne rien faire
  end_if    
end_sub



et je n'ai rien constaté.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Conflit entre ON_USER_EVENT et INACTIVE 0 Empty
MessageSujet: Re: Conflit entre ON_USER_EVENT et INACTIVE 0   Conflit entre ON_USER_EVENT et INACTIVE 0 EmptyMar 12 Avr 2022 - 23:47

OK. J'ai fait des tests plus approfondis.

Constat: si on fait DLL_ON alors que la form 0 est inactive, alors la génération d'un USER_EVENT n'a jamais lieu.
Vérification faite: le fait de faire INACTIVE 0 fause la détection du handle de la form 0 !
Or, lors du chargement de la DLL, je détermine, une fois pour toutes, le handle de la form 0.
Donc, si la form 0 est inactive lors de DLL_ON, ma variable globale MAIN_FORM_HANDLE ne contient pas la
bonne valeur et tout le mécanisme ensuite est faussé.

Code Panoramic commenté:
Code:
' test_SendUserEvent.bas

label userevent
dim res%, hnd1%, hnd2%, hnd3%

hnd1% = handle(0)
 inactive 0                    : ' USER_EVENT n'est pas généré
hnd2% = handle(0)
dll_on "KGF.dll"              : ' <========= bloque la génération du USER_EVENT si form 0 est inactive !
 active 0
hnd3% = handle(0)
on_user_event userevent
res% = dll_call2("SendUserEvent",21,23)
message "Handles de form 0: "+str$(hnd1%)+"-->"+str$(hnd2%)+"-->"+str$(hnd3%)+"  MainFormHandle="+str$(res%)
end

userevent:
  message "User_Event: "+str$(user_event_wparam)+"  "+str$(user_event_lparam)
  return

Code de la fonction SendUserEvent:
Code:
const
  CM_PANORAMIC_USER = WM_USER + 3000;

function SendUserEvent(wp,lp: integer): integer; stdcall; export;
begin
  SendMessage(MainFormHandle,CM_PANORAMIC_USER,wp,lp);
  result := MainFormHandle;
end;
exports SendUserEvent;

Conclusion:
S'il faut charger KGF.dll, il ne faut surtout pas désactiver la form 0 !

EDIT
Ce problème peut être évité en insérant cette ligne dans le code Panoramic immédiatement après DLL_ON:
Code:
res% = dll_call1("SetMainFormHandle",handle(0))
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Conflit entre ON_USER_EVENT et INACTIVE 0 Empty
MessageSujet: Re: Conflit entre ON_USER_EVENT et INACTIVE 0   Conflit entre ON_USER_EVENT et INACTIVE 0 Empty

Revenir en haut Aller en bas
 
Conflit entre ON_USER_EVENT et INACTIVE 0
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Conflit de méthodes...
» ACTIVE/INACTIVE sur CONTAINER_OPTION
» FLTK et inactive
» Fonction inkey$ inactive dans un form autre que form0
» HIDE, SHOW, INACTIVE, ACTIVE

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Un problème avec PANORAMIC?-
Sauter vers: