Big bizarre à la mord moi le boeuf !!

cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 - 11 juin 2007 à 11:08
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 - 1 juil. 2007 à 21:36
Bonjour  à tous,

Ben voilà, j'ai un petit bug génant au boulot...

Suite à  l'installation de ma source ici (avec InnoSetup et Istool), sur plusieurs postes avec WinXp et deux postes avec Win2000....et ben, sur les deux postes avec Win2000, cela plante aléatoirement...

Qaund on lance l'executable, tout se fige, plus accés au gestionnaire de tache, enfin il faut faire directement un On/Off du Pc.

Je ne sais vraiment pas pourquoi cela fait cela, et vous demandes si vous le voulez bien de faire un essai si vous avez Win2000, ou de m'aider à résoudre ce petit problème bizarre !!!

Dans tout les cas merci d'avance de votre particiaption.

A+
Exploreur

 Linux a un noyau, Windows un pépin

 

14 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
11 juin 2007 à 11:26
ressemble a une fuite mémoire....

je vois que tu utilise Rey_XpBasics.ocx, me demande s'ils ne sont pas a l'origine de ton soucis...
ses controles sont vieux et buggés... la lecture de leur code me donne même la nausée, la preuve que l'on évolue ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
11 juin 2007 à 11:32
Salut Renfield,

Et ben punaise...si je dois changer tout mes boutons, etc....je ne suis pas sortie de l'auberge moi !!!lol...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
11 juin 2007 à 11:39
Salut Renfield,

Ce que je ne comprend pas, c'est pourquoi il y aurait une fuite mémoire sous 2000 et pas sous XP ? 

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
11 juin 2007 à 11:40
c'est pas très long a faire....(modification  des forms sous notepad)
a voir si ton soucis viens bien de là .....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
11 juin 2007 à 11:42
étrange cette selection de l'OS, effectivement.....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
11 juin 2007 à 20:05
Salut,

c' est probablement lié aux Apis utilisées dans l' UC.
Je pense que 2000 est plus proche de 98 que de XP
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
11 juin 2007 à 21:54
ses controles sont vieux et buggés... la lecture de leur code me donne même la nausée, la preuve que l'on évolue ^^



Qu'est ce que nous on devrait dire...
J'aimerai bien faire des UCs comme ceux-là !

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
11 juin 2007 à 22:00
nop, les APIs 2000 sont compatibles Xp... y'a que peut de fonctionnalités propres a Xp...
les vieux controles passent moyen sous 98, mais 2000 et Xp, normallement, pas de soucis

reste que j'ignore si le soucis viens bien de là...

secundo, il m'a semblé voir que le controle Xp_Basics n'etait pas le version en ligne actuellement ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
12 juin 2007 à 00:20
je disais ça parce que j' ai eu un cas similaire avec un UC
(Button2000 si vous connaissez).
Il fonctionne parfaitement sous XP.Alors que sous Win2000
il déconne quand la feuille, dans laquelle il est integré, est réactivée.
c.à.d quand elle passe du second au premier plan.
En regardant de plus près une function  (redraw en occurence), j' ai relevé
que cette fonction fait appel à une autre qui elle même faisait appel à une
autre qui teste la version...
'...
'
Private Function redraw()
UserControl.Cls
Dim fond As OLE_COLOR
Dim bord1 As OLE_COLOR
Dim bord2 As OLE_COLOR





P.Left = 0
P.Width = ScaleWidth
P.Top = 0
P.Height = ScaleHeight





SetRect ir, 0, 0, (ScaleWidth) - 1, (ScaleHeight) - 1





Select Case State
    Case ButtonState.Normal
        fond = BackColor
        bord1 = BorderColor
        bord2 = BorderColorDark
    Case ButtonState.Down
        fond = BackColorDown
        bord1 = BorderColorDown
        bord2 = BorderColorDownDark
    Case ButtonState.Over
        fond = BackColorOver
        bord1 = BorderColorOver
        bord2 = BorderColorOverDark
End Select





P.BackColor = fond
P2.BackColor = fond
        Dim e, sh, sw, H, w, pl, pt, pw, ph, tl, tt, tw, th As Integer
        Dim il, it, ih, iw, jl, jt, jh, jw
        If m_Icon Is Nothing Then
            pw = 0
            ph = 0
        Else
            pw = Math.Round(m_Icon.Width / 26.5, 0)
            ph = Math.Round(m_Icon.Height / 26.5, 0)
        End If
        Set UserControl.Font = m_font
        If Len(m_Caption) = 0 Then
            tw = 0
            th = 0
        Else
            tw = TextWidth(m_Caption)
            th = TextHeight(m_Caption)
        End If
        H = ir.Bottom - ir.Top
        w = ir.Right - ir.Left
        Select Case m_PlacePremier
            Case ePlacePremier.Icone
                ih = ph
                iw = pw
                jh = th
                jw = tw
            Case ePlacePremier.Text
                jh = ph
                jw = pw
                ih = th
                iw = tw
        End Select
        Select Case m_PositionPremierX
            Case ePositionPremierX.[x px de la gauche]
                il = m_PixPremierX
            Case ePositionPremierX.[x px de la droite]
                il = w - iw - m_PixPremierX
            Case ePositionPremierX.Millieu
                il = (w - iw) / 2
        End Select
        Select Case m_PositionPremierY
            Case ePositionPremierY.[x px du haut]
                it = m_PixPremierY
            Case ePositionPremierY.[x px du bas]
                it = H - ih - m_PixPremierY
            Case ePositionPremierY.Millieu
                it = (H - ih) / 2
        End Select
        Select Case m_PositionSecondX
            Case ePositionSecondX.[A gauche du premier]
                Select Case m_DistanceSecondX
                    Case eDistanceSecond.[à x px du premier]
                        jl = il - m_PixSecondX - jw
                    Case eDistanceSecond.[à x px du bord]
                        jl = m_PixSecondX
                    Case eDistanceSecond.[Entre premier et bord]
                        jl = (il - jw) / 2
                End Select
            Case ePositionSecondX.[A droite du premier]
                Select Case m_DistanceSecondX
                    Case eDistanceSecond.[à x px du premier]
                        jl = il + m_PixSecondX + iw
                    Case eDistanceSecond.[à x px du bord]
                        jl = w - m_PixSecondX - jw
                    Case eDistanceSecond.[Entre premier et bord]
                        jl = (w - il - iw - jw) / 2 + il + iw
                End Select
            Case ePositionSecondX.[Au meme niveau que premier]
                Select Case m_PositionPremierX
                    Case ePositionPremierX.[x px de la gauche]
                        jl = m_PixSecondX
                    Case ePositionPremierX.[x px de la droite]
                        jl = w - jw - m_PixSecondX
                    Case ePositionPremierX.Millieu
                        jl = (w - jw) / 2
                End Select
        End Select
        Select Case m_PositionSecondY
            Case ePositionSecondY.[Au dessus du premier]
                Select Case m_DistanceSecondY
                    Case eDistanceSecond.[à x px du premier]
                        jt = it - m_PixSecondY - jh
                    Case eDistanceSecond.[à x px du bord]
                        jt = m_PixSecondY
                    Case eDistanceSecond.[Entre premier et bord]
                        jt = (it - jh) / 2
                End Select
            Case ePositionSecondY.[Au dessous du premier]
                Select Case m_DistanceSecondY
                    Case eDistanceSecond.[à x px du premier]
                        jt = it + m_PixSecondY + ih
                    Case eDistanceSecond.[à x px du bord]
                        jt = H - m_PixSecondY - jh
                    Case eDistanceSecond.[Entre premier et bord]
                        jt = (H - it - ih - jh) / 2 + it + ih
                End Select
            Case ePositionSecondX.[Au meme niveau que premier]
                Select Case m_PositionPremierY
                    Case ePositionPremierY.[x px du haut]
                        jt = m_PixSecondY
                    Case ePositionPremierY.[x px du bas]
                        jt = H - jh - m_PixSecondY
                    Case ePositionPremierY.Millieu
                        jt = (H - jh) / 2
                End Select
        End Select
       





        Select Case m_PlacePremier
            Case ePlacePremier.Icone
                pt = it
                pl = il
                tt = jt
                tl = jl
            Case ePlacePremier.Text
                pt = jt
                pl = jl
                tt = it
                tl = il
        End Select
        If Not m_Icon Is Nothing Then
            Dim Brsh As Long
            Dim lr As Long
            If IsMsimg32 Then
                P2.Left = -pw
                P2.Top = 0
                P2.Width = pw
                P2.Height = ph
                Dim Blend As BLENDFUNCTION, BlendLng As Long
                Select Case State
                    Case ButtonState.Normal
                        Blend.SourceConstantAlpha = m_Alpha
                        CopyMemory BlendLng, Blend, 4
                        lr = DrawState(P2.hDC, 0, 0, m_Icon, 0, 0, 0, 0, 0, DST_ICON Or DSS_NORMAL)
                        AlphaBlend P.hDC, pl, pt, pw, ph, P2.hDC, 0, 0, pw, ph, BlendLng
                    Case ButtonState.Down
                        Blend.SourceConstantAlpha = m_AlphaDown
                        CopyMemory BlendLng, Blend, 4
                        lr = DrawState(P2.hDC, 0, 0, m_Icon, 0, 0, 0, 0, 0, DST_ICON Or DSS_NORMAL)
                        AlphaBlend P.hDC, pl, pt, pw, ph, P2.hDC, 0, 0, pw, ph, BlendLng
                    Case ButtonState.Over
                        Blend.SourceConstantAlpha = m_AlphaOver
                        CopyMemory BlendLng, Blend, 4
                        Brsh = CreateSolidBrush(RGB(136, 141, 157))
                        lr = DrawState(P2.hDC, Brsh, 0, m_Icon, 0, 1, 1, 0, 0, DST_ICON Or DSS_MONO)
                        lr = DrawState(P2.hDC, 0, 0, m_Icon, 0, -1, -1, 0, 0, DST_ICON Or DSS_NORMAL)
                        AlphaBlend P.hDC, pl, pt, pw, ph, P2.hDC, 0, 0, pw, ph, BlendLng
                End Select
            Else 'impossible de faire de rtansparance alpha
                P2.Left = -pw
                P2.Top = 0
                P2.Width = pw
                P2.Height = ph
                Select Case State
                    Case ButtonState.Normal
                        lr = DrawState(P.hDC, 0, 0, m_Icon, 0, pl, pt, 0, 0, DST_ICON Or DSS_NORMAL)
                    Case ButtonState.Down
                        lr = DrawState(P.hDC, 0, 0, m_Icon, 0, pl, pt, 0, 0, DST_ICON Or DSS_NORMAL)
                    Case ButtonState.Over
                        Brsh = CreateSolidBrush(RGB(136, 141, 157))
                        lr = DrawState(P.hDC, Brsh, 0, m_Icon, 0, pl + 1, pt + 1, 0, 0, DST_ICON Or DSS_MONO)
                        lr = DrawState(P.hDC, Brsh, 0, m_Icon, 0, pl - 1, pt - 1, 0, 0, DST_ICON Or DSS_NORMAL)
                End Select
            End If
        End If
        If Len(m_Caption) > 0 Then PrintAt P.hDC, tl + 0, tt + 0, Caption
With ir
    P.Line (.Left, .Top)-(.Right, .Top), bord1
    P.Line (.Right, .Top)-(.Right, .Bottom), bord2
    P.Line (.Right, .Bottom)-(.Left, .Bottom), bord2
    P.Line (.Left, .Bottom)-(.Left, .Top), bord1
End With
End Function





'
Public Function IsMsimg32() As Boolean
    Dim vers As EnumWinVer
    vers = GetVersion
    Select Case vers
        Case EnumWinVer.Win95
            IsMsimg32 = False
        Case EnumWinVer.Win95OSR2
            IsMsimg32 = False
        Case EnumWinVer.WinNT3_0
            IsMsimg32 = False
        Case EnumWinVer.WinNT3_1
            IsMsimg32 = False
        Case EnumWinVer.WinNT3_5
            IsMsimg32 = False
        Case EnumWinVer.WinNT4
            IsMsimg32 = False
        Case Else
            IsMsimg32 = True
    End Select
End Function
'
Public Function GetVersion() As EnumWinVer
    Dim myVer As OSVERSIONINFO
    Dim dl&
    myVer.dwOSVersionInfoSize = 148
    dl& = GetVersionEx&(myVer)
    If myVer.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then        If myVer.dwMajorVersion 4 And myVer.dwMinorVersion 0 Then
            If myVer.dwBuildNumber = 950 Then
                GetVersion = Win95
            Else
                GetVersion = Win95OSR2
            End If        ElseIf myVer.dwMajorVersion 4 And myVer.dwMinorVersion 10 Then
            If myVer.dwBuildNumber = 1998 Then
                GetVersion = Win98
            Else
                GetVersion = Win98SE
            End If
        ElseIf myVer.dwMajorVersion >= 4 And myVer.dwMinorVersion > 10 Then
            GetVersion = WinME
        End If
    ElseIf myVer.dwPlatformId = VER_PLATFORM_WIN32_NT Then        If myVer.dwMajorVersion 3 And myVer.dwMinorVersion 0 Then
            GetVersion = WinNT3_0        ElseIf myVer.dwMajorVersion 3 And myVer.dwMinorVersion 1 Then
            GetVersion = WinNT3_1        ElseIf myVer.dwMajorVersion 3 And myVer.dwMinorVersion 5 Then
            GetVersion = WinNT3_5
        ElseIf myVer.dwMajorVersion = 4 Then
            GetVersion = WinNT4        ElseIf myVer.dwMajorVersion 5 And myVer.dwMinorVersion 0 Then
            GetVersion = Win2k        ElseIf myVer.dwMajorVersion 5 And myVer.dwMinorVersion 1 Then
            GetVersion = WinXP
        End If
    End If
End Function
'
'
Par contre, Explorer, dans ta dernière source ou xp_basics est integré,
je confirme que ça fonctionne très bien sous XP.





Mais désolé, j' ai pas Win2000 pour tester.






A+ 
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
12 juin 2007 à 08:24
Bonjour à tous,

Ben en tout cas, merci à tous de votre participation ainsi que les essais que vous avez fait, je vous en remercie fortement...

Ben, pour mon bug, j'ai peut-être la solution :

C'est que je vais demandé à mon "cher" informaticien de me changer rapidement ces Os sur les deux postes "foireux"!!! lol...non mais, vais pas me laissé faire par un Win2000!!!! Surtout que je "pense" que cela ne vient pas du code(du moins un bug dans celui-ci), car j'utilise pas énormement d'Api dans cette source...C'est franchement énervant!!!

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
12 juin 2007 à 09:31
Bonjour,
ça serait bien que tu puisses le convaicre...
Sinon voilà ce que moi j' ai fait dans mon cas.
Après avoir fait une copie de mon projet
>J' ai commencer par faire des captures écrans pour toutes les
feuilles ou j' ai insèré mon UC.
>j' ai ensuite découpé la zone qui entoure l' UC.
>j' ai eu donc un certain nombre d' images qui représentent le control
avec ses différentes étiquettes (Ok, Annuler, Valider, Fermer...etc)
>sur le double du projet, j' ai commencer par remplacer chaque control
par son image et après avoir supprimer le control , j' ai attribué à l' image
ajoutée le même nom qu' avait le control (cmdOk cmdCancel,cmdValid ...etc),
Ainsi pas besoin de changer quoi que se soit au code.Mes deux versions se
ressemblent parfaitement sauf que sur celui destiné à XP, les bouttons avait
l' effet RollOver alors que pour celui de Win2000, il n' y en avait pas.
C' est vrai que dans mon cas le projet était terminé, testé et emballé depuis
longtemps et donc j' avais rien à y ajouter .Du moins en attendant d' avoir
XP dans les autres posts.Mais si je devais faire des modifs j' étais prêt
à renoncer à la version avec l' UC, pour ne pas avoir à travailler doublement.
Heureusement tout s' est bien terminé...
(ils se marièrent et eurent beaucoup d' enfants )

Voilà donc si ça peut t' inspirer...
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
12 juin 2007 à 12:07
Salut Chaibat05,

Merci pour le conseil, mais pour l'instant cela ne plante plus...vas savoir pourquoi!!!!

Mais si cela le refait j'essayerai bien ta technique, mais je vais avoir du boulot, car je n'aie pas que les boutons mais aussi des textbox....

Note : Le bonjour à rolling

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
12 juin 2007 à 12:24
Il te salut aussi :-)
Bon, si ça refonctionne tant mieux.
(sûrement, après avoir su qu' il serait viré sinon )
Mais c' est vrai que dans ton cas c' est plu délicat, car tu as aussi
des listbox et autres...

Pour l' instant ne changes donc rien, mais regardes si tu peux avoir
le code source de ReyXpBasics (s' il est disponible).
C' est plus facile de cerner l' erreur en itègrant la source
que l' ocx, enfin je crois.
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
1 juil. 2007 à 21:36
Bonsoir,

Apparement bug résolu par la réinstallation dans la Bdr des ocx(et je pencherai plutôt sur un problème d'inscription dans la Bdr de Rey_XpBasics.ocx)..

Merci de votre colaboration à tous..

Bonne soirée et bon de fin de week...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0