如何用visual studio 2005中调试 Windows Mobile MFC ACTIVEX控件

    当你使用visual studio 2005去开发MFC ACTIVEX控件的话,会碰到一些非常奇怪的事情,你会发现编译完成后部署到POCKET PC设备上去的时候发现不能调用。由于是嵌入式软件的开发,同桌面软件开发有点不同,因此在调试过程中比桌面开发复杂一点。

    为了简单测试自己开发的控件是否能正常的使用,你可以利用POCKET PC 上的IE浏览器作为你的测试工具,简单而且方便。

第一步:在visual studio 2005上,选择智能MFC ACTIVEX项目然后根据默认设置新建一个ACTIVEX的控件,微软的默认控件会生成一个椭圆形状的图形。

第二步:用记事本写一段JAVASCRIPT 脚本,保存为test.htm,把文件拷贝到POCEKET PC 的设备上。

    <script language="javascript">

       var obj=new ActiveXobject(“你开发控件的名字”);

       if (obj=null )

           alert("控件调用成功");

       else

           alert("控件调用失败");

    </script>

第三步:在visual studio 2005上点击生成和部署,visual studio 2005会把你的控件部署到智能设备中。然后用浏览器浏览test.htm,你会发现浏览器上没有椭圆形状的图形,而且系统也没有报什么错误信息。用remote registry editor查看智能设备的注册表,发现你的控件根本没有在注册表中注册。所以在浏览器中没有显示椭圆形状的图像。同样的我用ATL编写控件,然后生成和部署,则在智能设备中能注册控件。

如何让MFC开发的控件能注册上去呢?只能采用老办法用自己编写代码注册。你可以生成一个智能设备的程序然后写上下面一段注册代码,这样你的控件就注册到设备中去了。

注册控件的代码

 HMODULE hLib = ::LoadLibrary(strLib);
if(hLib == 0) {
   return FALSE;
}
HRESULT (STDAPICALLTYPE *pDllRegisterServer)();
(FARPROC&)pDllRegisterServer = ::GetProcAddress(hLib, _T("DllRegisterServer"));
if(pDllRegisterServer == NULL) {   
::FreeLibrary(hLib);
   return FALSE;
}
if(FAILED(pDllRegisterServer ())) {
   ::FreeLibrary(hLib);
   return FALSE;
} else {
   ::FreeLibrary(hLib);
   return TRUE;
}
反注册控件代码

 HMODULE hLib = ::LoadLibrary(strLib);
if(hLib == 0) {
   return FALSE;
}
HRESULT (STDAPICALLTYPE *pDllUnregisterServer)();
(FARPROC&)pDllUnregisterServer = ::GetProcAddress(hLib, _T("DllUnregisterServer"));
if(pDllUnregisterServer == NULL) {
   ::FreeLibrary(hLib);
   return FALSE;
}
if(FAILED(pDllUnregisterServer())) {
   ::FreeLibrary(hLib);
   return FALSE;
} else {
   ::FreeLibrary(hLib);
   return TRUE;
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值