begin process at 2010 02 09 22:29:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Formulaire

 > 

Appliquer un skin dans une fenêtre mère MDI


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Appliquer un skin dans une fenêtre mère MDI

samedi 26 novembre 2005 à 11:35:06 | Appliquer un skin dans une fenêtre mère MDI

NoFutur

Tout est dans le titre :

Si vous connaissez un code sympathique permettant de skinner le contour intérieur d'une fenêtre mère MDI je suis preneur.

J'ai déjà tout ce qu'il me faut pour pouvoir skinner des fenêtre filles, je bloque un peu beaucoup sur les fenêtres mères qui ne se laissent pas manipuler aussi bien que leurs filles (l'instinct maternel peut-être).

La finalité serait de pouvoir donner l'illusion qu'il n'y a qu'une seule fenêtre skinner le reste étant appeler sans utiliser les bordures classiques des fenêtres.

Merci d'avance

samedi 26 novembre 2005 à 13:57:58 | Re : Appliquer un skin dans une fenêtre mère MDI

Julien237

Réponse acceptée !
J'ai une solution à te proposer,
C'est surement pas la meilleur... mais bon....

Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

Dim e As Long, MeDC As Long

Private Sub MDIForm_Load()
    e = CreateRectRgn(5, 26, 200, 200) 'Créer un rectangle sans les bordures du form
    SetWindowRgn Me.hwnd, e, True  'Rogner le form en dehors de ce rectangle
    MeDC = GetDC(Me.hwnd)  ' Juste pour récupérer le DC du form
    Me.Picture = LoadPicture("c:\temp.bmp") 'Et tu applique ton skin
End Sub


Je t'ai aussi mis "CreateEllipticRgn" pour faire des form en forme d'éllipse...
Ainsi tu as le DC du form pour pouvoir dessiner dessus.
Evidemment le "skin" (c:\temp.bmp) est un peu simplet, je te conseil de créer le skin avec les bonnes tailles de bordures etc.. dans une picture box invisible, de l'enregistrer et puis de la charger. Ou plus simple d'utiliser stretchblt avec le DC récupéré...

Julien.
dimanche 27 novembre 2005 à 13:46:13 | Re : Appliquer un skin dans une fenêtre mère MDI

NoFutur

C'est excellent pour un bon début merci

dimanche 27 novembre 2005 à 20:48:38 | Re : Appliquer un skin dans une fenêtre mère MDI

NoFutur

Je reviens sur le devant de la scène pour un autre problème. En fouinant un peu j'ai trouvé ceci qui enlève bien les bordures de la fenêtre :

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByValdwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_CAPTION = &HC00000
Private Const WS_SYSMENU = &H80000

Private Sub MDIForm_Load()
   Dim lStyle As Long
   lStyle = GetWindowLong(Me.hwnd, GWL_STYLE)
   lStyle = lStyle Xor WS_CAPTION
   Call SetWindowLong(Me.hwnd, GWL_STYLE, lStyle)
End Sub


Le seul problème c'est qu'il me met une barre de défilement juste en bas de la fenêtre MDI mère, si tu as une solution potentielle à ce cas là je suis preneur.

Ton code est nikel jusqu'à ce que je teste avec les skins de XP actif, je me suis aperçu que les paramètres ne collaient plus avec la taille de la fenêtre.

dimanche 27 novembre 2005 à 22:21:35 | Re : Appliquer un skin dans une fenêtre mère MDI

Julien237

Réponse acceptée !

Gasp, je n'ai point de solutions pour la scrollbar...

Pour ce qui est de mon code, il faut utiliser les coordonnées relatives à la région utilisée,
Par exemple en reprennant ce que j'ai fait plus haut, le rectangle est (5,26,200,200)
Il faudra donc ajouter 5 à tes X et 26 à tes Y.
SetWindowRgn ne fait que masquer ce qui est en-dehors du rectangle...

Julien.



Cette discussion est classée dans : mère, fenêtre, mdi, appliquer, skinner


Répondre à ce message

Sujets en rapport avec ce message

Comment ancrer une fenêtre (vb6) ? [ par Daniel ] Bonjour à toi =:o)J'ai une appli en vb6 avec une feuille MDI mère et pleins de MDI filles.J'utilise une controle Sheridal qui ressemble à la barre de Ancrer une fenêtre fille dans une fenêtre mère [ par chelchel ] Bonjour, Je cherche à ancrer une fenetre fille dans la fenetre mère. (Ancrer fait aussi réference à dockable).Je cherche a positionner automatiquement Application MDI [ par Dinbougre ] voilà g une application MDI et j'utilise plusieurs fenêtres. En cliquant sur un bouton je veux ouvrir une petite fenêtre mais la fenêtre principal est maintenir une fenêtre au premier dans une feuille MDI [ par zzdx60 ] Salut à tous et à toutes,je voudrais dans une feuille MDI afficher une fenêtre en particulier toujours en premier plan.Tous les sources que j'ai trouv rafraîchissement après modification de contrôle [ par matonfire ] Bonjour,Voilà je débute avec VB.Net et j'ai quelques soucis. Mon premier problème est le suivant : dans une form fille je crée un numéro et j'aimerai comment patcher une fenêtre MDI [ par michel_renard ] trés débutant, je suis médecin et j'aimerais dans mon programme professionnel: repérér en arrière plan l'apparition d'une fenêtre fille (par son capti Centrer une fenêtre fille MDI [ par Omsey ] La propriété StartUpPosition des fenêtre filles de mon appli ne peut-être positionnéz que sur la valeur "0 - Manuel".J'aimerai que cette propriété soi Pb de barre d'outil avec feuille MDI [ par angelia ] Bonjour,j'ai un pb que je n'arrive pas à résoudre.Dans mon appli, j'ai une feuille MDI (mère) sur laquelle j'ai posé un toolbar (avec des boutons) et Rafraichissement d'une fenêtre mère d'une appli MDI [ par ymerej ] Bonjour,G vu ds les MSDN qu'il était impossible de rafraichir une fenetre mère MDI aloors comment je fais moi ? En effet, je suis obligé de rafraichir feuille MDI mère et fille ! [ par arzew99 ] salut à toutes et à toutes, J'ai une feuille MDI mère avec laquelle j'appelle une feuille Form1 (contrôle MDIchild = true) qui devrait me dessiner un


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales