Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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

 

Pied de page des forums

Powered by FluxBB