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 :
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
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)… 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 !!![]()
Partager