MapX Mobile开发总结二
如何将在ARM开发板上建立MapX Mobile环境
1,通过wince PB建立自己的wince环境,包含MFC库,HID USB键盘和鼠标支持,数据传输采用Microsoft ActiveSync。
2,在Visual Tools中通过depends工具得到MapX50.dll依赖库,主要是mfcce300.dll,这个库典型目录是在C:->Program Files->windows CE Tools->wce420->POCKET PC 2003->MFC->Lib->armv4下.将这个库复制到CE平台上的->Program Files->MapInfo->MapX Mobile目录下,并将MapX Mobile->target->arm->所有文件复制到该目录下。
3,将模拟ppc环境的dll复制到ce平台上的windows目录下。这是在ce4.0上模拟PPC环境的关键步骤。
4,运行EN_WINCE_EMBDVTOOLS30->DISK2->POCKTSDK->Program Files->TARGET->ARM->下的regsvrce.exe分别注册MapX50.dll mapxadods.dll,msafearraydataset.dll(前几步文件正确的话,这三个文件应该能得到顺利注册)。
5.打开EVC的Remote Registry Editor创建STRING key HKEY_LOCAL_MACHINE->Software->MapInfo->MapX Mobile->5.0->Geodictionary=->My Documents->Maps->,至此注册完成.将你所需要的地图全部文件移植到Maps目录下即可正常显示中文地图.
6,在->Program Files->MapInfo->MapX Mobile运行GeodictionaryManager50注册地图
机器不知道为什么这几天连接不上开发板了,所以第5步的注册只能是人工注册了
注册代码如下:
void CRegeDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CString str_ip(_T("->My Documents->Maps->"));
HKEY hKEY;
long result;
//打开与路径 data_Set 相关的hKEY,KEY_WRITE表示以写的方式打开。
long ret0=RegCreateKeyEx(HKEY_LOCAL_MACHINE, _T("->Software->MapInfo->MapX Mobile->->5.0"),0,_T("REG_SZ"),0,0,NULL,&hKEY,(unsigned long *)&result);
if(result==REG_CREATED_NEW_KEY)
{
MessageBox(_T("创建!"));
}
if(result==REG_OPENED_EXISTING_KEY)
{
MessageBox(_T("打开!"));
}
//long rect0 = (::RegCreateKeyEx(HKEY_LOCAL_MACHINE,
// data_Set,0,_T("REG_DWORD"),0,0,NULL,&hKEY,CheckExit));
if(ret0!=ERROR_SUCCESS)
{
MessageBox(_T("错误: 无法创建!"));
return;
}
//strip=(_T("->My Documents->Maps->"));
char lpb[30];
for(int i=0;i*(lpb+i) = (str_ip.GetAt(i));
lpb[i++]='->0';
DWORD type=REG_SZ;
DWORD cbData_1=str_ip.GetLength()+1;
long ret1=(::RegSetValueEx(hKEY, _T("Geodictionary"), 0,REG_SZ, (BYTE *)lpb, 30));
if(ret1!=ERROR_SUCCESS)
{
MessageBox(_T("错误: 无法修改有关注册表信息!"));
return;
}
RegCloseKey(hKEY);
RegFlushKey(HKEY_LOCAL_MACHINE);
}
void CRegeDlg::OnButton2()
{
// TODO: Add your control notification handler code here
CString strText;
HKEY hKey = NULL;
DWORD dwDisp;
DWORD dwType;
char a[30];
int nValueLen = MAX_PATH;
if(ERROR_SUCCESS != RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("->Software->MapInfo->MapX Mobile->->5.0"),0,KEY_READ,&hKey))
{
MessageBox(_T("未注册!"));
}
if(ERROR_SUCCESS != RegQueryValueEx(hKey, _T("Geodictionary"), 0, &dwType, (unsigned char *)a, (unsigned long *)&nValueLen));
{
if (REG_SZ==dwType)
{
MessageBox(_T("REG_SZ!"));
}
MessageBox(CString(a));
}
strText.ReleaseBuffer();
RegCloseKey(hKey);
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/686466/viewspace-915140/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/686466/viewspace-915140/