[R] drag & drop, listview et $WS_CHILD problème

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
serpafi
Niveau 3
Niveau 3
Messages : 40
Enregistré le : ven. 25 oct. 2019 21:19
Status : Hors ligne

[R] drag & drop, listview et $WS_CHILD problème

#1

Message par serpafi »

Bonjour à tous,
Je cherche à pouvoir faire un drag & drop sur une listview située sur une gui enfant.
Le problème c'est en utilisant $WS_CHILD, le drag & drop ne fonctionne plus :?

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GuiComboBox.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <file.au3>
#include <GuiListView.au3>
#include <MsgBoxConstants.au3>
#include <GuiEdit.au3>

#Region
$gui1 = GUICreate("Form1", 738, 506, 548, 270,BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZEBOX,$WS_SIZEBOX))
GUISetState ( @SW_LOCK ) ; empêche de le repeindre


$gui2 = GUICreate("Form2", 738, 506, 548, 270,$WS_POPUP, BitOR($WS_EX_ACCEPTFILES, $WS_EX_LAYERED, $WS_EX_TOPMOST, $WS_CHILD, $WS_EX_COMPOSITED),$gui1)
$List1 = GUICtrlCreateList("", 120, 320, 257, 149)
$ListView1 = GUICtrlCreateListView("", 384, 320, 322, 150)
GUICtrlSetState ( $ListView1, $GUI_DROPACCEPTED )
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_DROPPED
         ConsoleWrite("DropID case =" & @GUI_DropId & @CRLF)
      Case $GUI_EVENT_CLOSE
         Exit
   EndSwitch
WEnd

La contrainte dans tout cela c'est que je dois garder au minimum ces styles sur les 2 GUI .
pour la GUI 1 : $GUI_SS_DEFAULT_GUI,$WS_MAXIMIZEBOX,$WS_SIZEBOX
pour la GUI 2 : $WS_POPUP, BitOR($WS_EX_ACCEPTFILES, $WS_EX_LAYERED, $WS_EX_TOPMOST, $WS_CHILD, $WS_EX_COMPOSITED),$gui1)

Est-ce un bug ou une erreur dans mon codage??
pour le coup, je n'ai pas de solution,
avez-vous des pistes ou autres?

Je vous remercie d'avance
Modifié en dernier par serpafi le mar. 10 nov. 2020 18:55, modifié 1 fois.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] drag & drop, listview et $WS_CHILD problème

#2

Message par TommyDDR »

Vous vous emmêlez les pinceaux dans les styles et les styles étendus
GUICreate ( "title" [, width [, height [, left = -1 [, top = -1 [, style = -1 [, exStyle = -1 [, parent = 0]]]]]]] )
$WS_ = style
$WS_EX_ = style étendu

Vous ne pouvez donc pas avoir $WS_CHILD dans le paramètre "exStyle".
De plus :
$WS_POPUP 0x80000000 Creates a pop-up window. This style cannot be used with the WS_CHILD style.

$WS_POPUP ne peut être mis en même temps que $WS_CHILD, mais ce n'est pas grave car une WS_CHILD n'aura pas de bordure.

Essayez ce script :
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GuiComboBox.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <file.au3>
#include <GuiListView.au3>
#include <MsgBoxConstants.au3>
#include <GuiEdit.au3>


#Region
$gui1 = GUICreate("Form1", 738, 506, 548, 270,BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZEBOX,$WS_SIZEBOX))
GUISetState(@SW_SHOW)


$gui2 = GUICreate("Form2", 738, 506, 0, 0, $WS_CHILD, BitOR($WS_EX_ACCEPTFILES, $WS_EX_LAYERED, $WS_EX_TOPMOST, $WS_EX_COMPOSITED),$gui1)
$List1 = GUICtrlCreateList("", 120, 320, 257, 149)
$ListView1 = GUICtrlCreateListView("", 384, 320, 322, 150)
GUICtrlSetState ( $ListView1, $GUI_DROPACCEPTED )
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_DROPPED
         ConsoleWrite("DropID case =" & @GUI_DropId & @CRLF)
      Case $GUI_EVENT_CLOSE
         Exit
   EndSwitch
WEnd
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
serpafi
Niveau 3
Niveau 3
Messages : 40
Enregistré le : ven. 25 oct. 2019 21:19
Status : Hors ligne

Re: [..] drag & drop, listview et $WS_CHILD problème

#3

Message par serpafi »

:lol: on en apprend tout les jours, merci beaucoup.
Le drag&drop fonctionne mais la listview ne s'affiche pas complétement :( , avez-vous le même soucis ?
En rajoutant $WS_POPUP dans le BitoR il s'affiche entièrement mais pas de D&D :? (logique $WS_CHILD et $WS_popup incompatible)
J'ai vraiment du mal avec la gestion des GUI CHILD :lol:
et merci pour l'info des bordures avec WS_CHILD ca va mettre utile.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] drag & drop, listview et $WS_CHILD problème

#4

Message par TommyDDR »

Si vous enlevez $WS_EX_LAYERED et $WS_EX_COMPOSITED, elle s'affiche bien

$WS_EX_LAYERED Creates a layered window. Note that this cannot be used for child windows.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
serpafi
Niveau 3
Niveau 3
Messages : 40
Enregistré le : ven. 25 oct. 2019 21:19
Status : Hors ligne

Re: [R] drag & drop, listview et $WS_CHILD problème

#5

Message par serpafi »

Merci TommyDDR pour vos conseils et votre temps.
grâce à vous, j'ai pu mieux comprendre les styles et régler mon problème.
Pas de code pour la résolution à proposer puisque j'ai résolu mon problème en un seul GUI donc hors sujet.
En tout cas merci beaucoup et continuer à aider, vous êtes un don du code.
Répondre