MDI Picture [Résolu]

Signaler
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
-
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
-
Bonjour à tous

J'aimerais mettre une image de fond sur le form principale de ma MDI

qui "FIT TO SCREEN" selon la taille de l'écran.

Sauf que Me.Autoredraw, Me.PaintPicture ne marche pas sur une MDI

et que je ne veux pas mettre de pictureBox sur la form car cela décale tout!

Si quelqu'un a une solution, autre que celle de charger une picture de la taille de l'écran également.

Je sais que c possible, mais je ne vois pas comment faire...

Merci pour votre aide.

TBBUIM

5 réponses

Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
8
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
8
Source venant d'ici
' Make the image fit the MDI form.
Private Sub MDIForm_Resize()
Dim client_rect As RECT
Dim client_hwnd As Long

picStretched.Move 0, 0, _
ScaleWidth, ScaleHeight

' Copy the original picture into picStretched.
picStretched.PaintPicture _
picOriginal.Picture, _
0, 0, _
picStretched.ScaleWidth, _
picStretched.ScaleHeight, _
0, 0, _
picOriginal.ScaleWidth, _
picOriginal.ScaleHeight

' Set the MDI form's picture.
Picture = picStretched.Image

' Invalidate the picture.
client_hwnd = FindWindowEx(Me.hwnd, 0, "MDIClient", _
vbNullChar)
GetClientRect client_hwnd, client_rect
InvalidateRect client_hwnd, client_rect, 1
End Sub








TB
BU
IM
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Il faut SubClasser ta fenetre

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
4
Date d'inscription
samedi 14 avril 2007
Statut
Membre
Dernière intervention
12 janvier 2009

On peut faire aussi comme ceci :

Mettre 2 pictureBox sur la MDIForm : PictureOriginal et PictureStrech
(mettre le PictureOriginal en visible = false)

Mettre aussi un timer : TimerResize
(mettre l'interval du timer a 10 par exemple)

Le but de ce timer va être d'attendre la fin du resize de la form car si on clique sur le bouton agrandir de la feuille sans mettre une toute petite temporisation alors ca va merder !!!

Voici le code :

Private Sub MDIForm_Resize()

    TimerResize.Enabled = True

End Sub

Private Sub TimerResize_Timer()

    TimerResize = False
    PictureStrech.Move 0, 0, MDIForm1.Width, MDIForm1.Height - 500
    PictureStrech.Picture = PictureOriginal.Picture
    PictureStrech.PaintPicture PictureStrech.Picture, 0, 0, PictureStrech.ScaleWidth, PictureStrech.ScaleHeight

End Sub

Voila  @+
Messages postés
4
Date d'inscription
samedi 14 avril 2007
Statut
Membre
Dernière intervention
12 janvier 2009

Oups a oui désolé !
Effectivement pour que la picture soit en MDIForm1.picture
alors oui la meilleure solution et bien celle-ci ;-)
http://www.vb-helper.com/howto_mdi_background_picture.html
Sinon on ne voit pas les childs !!!

Sorry

@+