J'ai une application 'Windows' standard, écrite en C++ (sans usage de classes, donc en C ! ) dans l'une des boites de dialogue j'ai besoin d'afficher du HTML, j'ai renoncé à utiliser 'Chrome' et "Edge' dans leurs versions ad-hoc et me suis rabattu sur le WebControl inclus dans une 'form' ; je pensais gagner du temps ... C'était sans compter avec ma méconnaissance de l'embrigadement des "^".
Voilà la fonction en question :
Code C : 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
30
31
32 #pragma managed #include "vue HTML.h" void VoirBranche(HWND idDlg,int code) { char tpFic[1000]; RECT rect; vueHTML ^ MaVue; HWND visu; switch(code) { case 1: strcpy(tpFic, CheminArboFichier("", 1)); // mes fonctions pour naviguer dans les répertoires de données de mon application FaitChoixItemHTML(BrancheCourante, 1, tpFic); // crée un fichier HTML avec diverses données qui sont dynamiquement envoyées à une adjonction Chrome/ Mozilla visu = GetDlgItem(idDlg, BR_ST_VISU); // un contrôle dans la boite de dialogue ouverte GetWindowRect(visu, &rect); MaVue = gcnew vueHTML; MaVue->SetBounds(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top); MaVue->Activate(); MaVue->Show(); MaVue->BringToFront(); MaVue->visionneuse->Navigate(gcnew Uri(gcnew String(tpFic))); break; case -1: MaVue->Close(); } } #pragma unmanaged
L'appel avec "code = 1" fonctionne et j'ai bien mon HTML visible.
Très logiquement l'appel avec "code = 2" est impossible puisque la référence 'MaVue' n'existe plus !
En bon programmeur à l'ancienne l'idée serait de créer une variable globale avec la référence ... cela est interdit ! "Pourquoi faire simple quand on peut faire compliqué" est manifestement l'adage préférés des concepteurs anglo-saxons.
Pourtant, si la référence n'existe plus l'objet lui est là !
Comment récupérer un moyen d'agir sui lui ? Ne serais-ce que pour faire "MaVue->Close()" à la sortie de la boite de dialogue.
Je suppose qu'il y a un moyen, sans doute évident (!) ...
Merci de votre aide.
Partager