GeoMedia.Application GeoApp = null;
int i;
try
{
GeoApp = (GeoMedia.Application)Marshal.GetActiveObject("Geomedia.Application");
}
catch
{
GeoApp = (GeoMedia.Application)Activator.CreateInstance(Type.GetTypeFromProgID("Geomedia.Application"));
}
GeoApp.Visible = true;
int i;
try
{
GeoApp = (GeoMedia.Application)Marshal.GetActiveObject("Geomedia.Application");
}
catch
{
GeoApp = (GeoMedia.Application)Activator.CreateInstance(Type.GetTypeFromProgID("Geomedia.Application"));
}
GeoApp.Visible = true;
如果使用GeoMedia.Application来打开geomeida进程,则以后中所有相关的对象都必须使用CreateService方法进行创建,若使用new进行对象的创建,则无法与GeoMedia.Application的各种对象相关联。例如GMMapview对象是从geomedia.Window中获取的,如果将使用new构造的LegendEntry添加进GMMapview,则会报错“指定的转换无效”.
因此,如果是用new构造的对象,则其所有相关的geomeida对象都必须使用new来构造,如果是与geomedia应用程序相关联,则所有相关的geomeida对象都必须使用CreateService来创建。
因此,如果是用new构造的对象,则其所有相关的geomeida对象都必须使用new来构造,如果是与geomedia应用程序相关联,则所有相关的geomeida对象都必须使用CreateService来创建。