#1 Thu 30 April 2020 22:52
- Chezkele
- Juste Inscrit !
- Date d'inscription: 30 Apr 2020
- Messages: 2
[Mapinfo] afficher une carte dans une fenetre VB.Net
Bonjour,
je voudrais afficher un fond de carte dans une fenêtre VB.net et mon code l'affiche dans une fenêtre mapinfo. Le principe est d'indiquer que la fenêtre VB.Net est parente de la fenêtre Mapinfo et il semble exister des instructions pour cela mais ce ne fonctionne pas.
Voici en substance ce que j'ai fait:
Code:
Dim g_mapinfo As MapInfoApplication g_mapinfo = New MapInfoApplication 'CreateObject("MapInfo.Runtime") g_mapinfo.Do("Set CoordSys Earth Projection 3, 1002, ""m"", 0, 46.8, 45.89891889, 47.69601444, 600000, 2200000 ") g_mapinfo.Do("Open Table """ & adresse du fond de carte ") Dim hwnd As String = Me.picFrance.Handle().ToString() g_mapinfoi.Do("Set Application Window " & hwnd) g_mapinfo.Do("Set Next Document Parent " & hwnd & " Style 1")
Merci d'avance, Ch.
Hors ligne
#2 Tue 05 May 2020 16:44
- Chezkele
- Juste Inscrit !
- Date d'inscription: 30 Apr 2020
- Messages: 2
Re: [Mapinfo] afficher une carte dans une fenetre VB.Net
Bonjour,
j'ai finalement réussi à faire ce que je voulais, je poste ma solution au cas où quelqu'un ayant le même problème passerait par là.
J'ai laissé tomber les commandes MapInfo "Application Window" et "Next Document Parent" qui ne faisaient pas ce que je voulais, et j'ai finalement utilisé la fonction VB.Net "SetPArent(pointeurEnfant, pointeurParent)".
Dans le code qui suit, "mi" est le nom d'un objet "MapInfoApplication":
Code:
' ligne nécessaire à l'usage de SetParent(), à écrire en dehors de toute méthode Declare Auto Function SetParent Lib "user32.dll" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Integer ' chargement de la "fenêtre carte" mi.Do("Map From nomCarte ") ' récupération de l'identifiant et du pointeur de la fenêtre carte Dim ident As Integer = mi.Eval("WindowID(1)") Dim hwnd3 As IntPtr = New IntPtr(Convert.ToInt32(mi.Eval("WindowInfo(" & ident & ", 12)"))) 'définition du parent de la fenêtre carte Dim hwnd As String = Me.fenetreParent.Handle().ToString() SetParent(hwnd3, hwnd)
Hors ligne