IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Embarquer Word dans form VB6


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 88
    Par défaut Embarquer Word dans form VB6
    Bonjour tout le monde,

    Voilà mon petit problème qui est déjà relativement avancé ….
    Le but est d’embarquer Word dans une fenêtre de mon programme, c’est déjà pas trop mal mais pas tout à fait au top !

    Voici pour l’instant ce que j’ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Dim MyWord As Word.Application, doc As Word.Document
    Dim hcalc As Long
     
    Private Sub Form_Load()
    Dim styleFen As Long
     
    'Creation de la fenetre Word
     Set MyWord = New Word.Application
     Set doc = MyWord.Documents.Open("c:\Test.txt")
     
     'récupération de l'identifiant de la fenetre =>hwnd en fonction de son entete
     hcalc = FindWindow(vbNullString, "Test.txt – Microsoft Word")
     
    'Pour faire plus joli je supprime les bordures de la fenêtre Word
    styleFen = GetWindowLong(hcalc, GWL_STYLE)
    styleFen = styleFen And (Not WS_BORDER)                                                                                                                                 
    SetWindowLong hcalc, GWL_STYLE, styleFen
     
    'Je rend bien sur la fenetre Word visible
    MyWord.Visible = True
    End Sub
     
    'Lorsque je redimensionne la fenetre principale alors je redimensionne aussi son contenu
    Private Sub Form_Resize()
     
    MoveWindow hcalc, -5, -5, Me.Width / Screen.TwipsPerPixelX - 2, Me.Height / Screen.TwipsPerPixelY - 5, 1
     
    End Sub
    Donc ça ça marche très bien. La fenêtre Word est bien embarquée dans ma fenêtre VB. Le seul petit problème c’est que la fenêtre Word embarquée se comporte comme une vrai fenêtre. C’est à dire que si je clique à l’intérieur alors la fenêtre parent (i-e ma form VB) perd le focus… Perso je préfererais un comportement plus comme une MDI avec une fenêtre fille (la fenêtre fille a le focus et la fenêtre parent aussi, je dis ça par rapport à la couleur bleu foncée de la barre de titre )… Je sais pas si je me fais bien comprendre…..

    Et puis aussi une autre question, soyons fou : Le hwnd que je récupère durant le form load, y a t-il des chances qu’il évolue ou alors puis je considérer que c’est ma référence pour la manipulation de la fenêtre Word. Parce que c’est ce que je fais en ce moement, je l’enregistre dans une variable de la classe pendant le form load et je la réutilise pendant la form_resize. Y’a pas un petit risque de bug là ?

    Merci pour votre aide et bon appétit pour ceux qui vont manger !!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 88
    Par défaut
    Mais que je suis co* .
    En fait je voulais avoir une fenêtre word sans bordure incluse dans une fenêtre VB6. Que la fenêtre VB6 prenne le titre du document en cours de lecture. Que la fenêtre VB6 se comporte comme une fenêtre Word et avoir une icone perso...
    Et ça donne donc...... une fenêtre Word avec une icone perso

    Suis un peu couillon des fois, limite torturé....

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 112
    Par défaut
    Salut, j'ai testé ton code qui me servirait beaucoup mais probléme, je n'ai pas les fonctions FindWindow et GetWindowLong.

    Peut-tu mettre la totalité du code stp ?

    Merci

  4. #4
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    fweds : Je crois que ce sont des fonctions de l'API Windows... Il manque donc les Private Declare... (ou public, si dans un module). Donc effectivement, ça ne marche pas sans. En attendant que zesamoth les fournisse, tu peux regarder avec l'utilitaire API Viewer (fourni avec VB, il faut l'installer cependant).

    zesamoth : Tu as essayé de mettre ton document Word dans un composant OLE ? Tu as bien créé une fenêtre principale d'application (MDI) et une fenêtre fille ?

Discussions similaires

  1. Affichage word dans form et barre d'outils.
    Par lejert dans le forum Composants VCL
    Réponses: 1
    Dernier message: 25/01/2008, 12h03
  2. Aperçu avant impression word dans Form
    Par alexxx69 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 02/05/2007, 13h33
  3. Bouton "quitter" dans une forme vb6
    Par lebienestrare dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/09/2006, 17h32
  4. [VB6] Probleme avec initialisation d'un Data ADO dans form Load
    Par angelevil dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/06/2006, 22h41
  5. Réponses: 2
    Dernier message: 31/03/2006, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo