• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
【专题】VisualStudio2005(4)
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
【专题】VisualStudio2005(4)
软件发布 【专题】VisualStudio2005(4)
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 认证考试 >> 程序员 >> 【专题】VisualStudio2005(4)

【专题】VisualStudio2005(4)

添加时间: 2007-4-8 5:57:24  作者: 程序员认证参考  阅读次数:57   来源: http://www.d9soft.com

       

循序渐进:visual studio 2005 中的新增本机开发功能许多典型问题应已涵盖在 msdn 上的“what's new in visual studio 2005 for native developers”和“将 microsoft embedded visual c++ 项目迁移到 visual studio 2005”两篇文章中。

如果您按 ctrl + 空格键使用 intellisense 技术来完成一行代码,则 ide 可能冻结。这是一个已知错误;因此,请不要按 ctrl + 空格键。

此体验的目标是使用 visual studio 2005 来创建用于 pocket pc 的 atl activex 控件,以及该 activex 控件对应的 mfc 宿主设备应用程序。该 activex 控件将是具有一种填充颜色的三角形,单击该控件时,填充颜色会发生变化。相应的宿主应用程序将是一个基于对话框的应用程序,用来驻留该 activex 控件。此外,还将用一个测试证书对控件和宿主应用程序都进行签名。

在此体验中,您将执行以下练习:

• 创建 atl activex 控件
 
• 创建 mfc activex 宿主应用程序
 


练习 1:创建 atl activex 控件在此练习中,您将使用 visual studio 2005 来创建一个用于 pocket pc 的 atl activex 控件。
完成 atl 智能设备项目向导的步骤

1.
 在 visual studio 2005 中,单击 file new project(文件 新建 项目)。
 
2.
 展开 visual c++,然后选择 smart device(智能设备)。
 
3.
 选择 atl smart device project(atl 智能设备项目),然后在 name(名称)框中键入 ctl1。
 
4.
 单击 ok(确定)。
 
5.
 在 atl smart device project wizard(atl 智能设备项目向导)页中,选择 platforms(平台)。
 
6.
 确保 windows mobile 5.0 pocket pc sdk 和 pocket pc 2003 都位于 selected sdks(选定的 sdk)区域中。如果它们不在该区域中,则在 installed sdks(已安装的 sdk)区域中选择它们,然后单击 add selected platform sdk to project(将选定的 platform sdk 添加到项目中)按钮。
 
7.
 选择 application settings(应用程序设置)。
 
8.
 确保在 server type(服务器类型)下选择了 dynamic-link library (dll)(动态链接库 [dll]),且在 additional options(附加选项)下没有选中任何复选框。
 
9.
 单击 finish(完成)。
 


创建 activex 类的步骤

1.
 在 solution explorer(解决方案资源 管理 器)中,右键单击 ctrl1 项目,然后单击 add class(添加 类)。
 
2.
 展开 visual c++,然后选择 smartdevice(智能设备)。
 
3.
 在 visual studio installed templates(visual studio 已安装的模板)下,选择 atl control(atl 控件),然后单击 add(添加)。
 
4.
 在 names(名称)页上,在 shortname(简称)框中键入 myctl。
 
5.
 选择 stockproperties(常用属性)。
 
6.
 在 not supported(不受支持)列表中,选择 fillcolor(填充颜色)。
 
7.
 单击 add selected property to the supported list(将选定的属性添加到受支持列表中)按钮将它添加到 supported(受支持)列表中。
 
8.
 单击 finish(完成)。请不要更改其他任何选项。
 


向 activex 类添加属性的步骤

1.
 单击 class view(类视图)选项卡,然后展开 ctl1。
 
2.
 右键单击 imyctl,再单击 add(添加),然后单击 addproperty(添加属性)。
 
3.
 在 propertytype(属性类型)框中,选择 short。
 
4.
 在 propertyname(属性名称)框中,键入 sides。
 
5.
 单击 finish(完成)。
 


向 activex 类添加代码的步骤

1.
 在 solution explorer(解决方案资源管理器)中,双击 myctl.h。
 
2.
 在 imyctl 界面末尾查找以下代码。

public:stdmethod(get_sides)(short* pval);public:stdmethod(put_sides)(short newval);
 
3.
 将以下代码添加在步骤 2 中的代码之后。这些成员用于绘制控件的边。

private:short       m_nsides;point      m_arrpoint[100];int     m_currentcolor;
 
4.
 将以下代码添加到 cmyctl() 构造函数主体。这会将控件初始化,使其具有三个边和一种填充颜色。m_currentcolor 用于跟踪当前颜色,以便单击控件时,该控件可以切换为其他颜色。

m_nsides = 3;m_clrfillcolor = rgb(0, 0xff, 0);m_currentcolor = 2;
 
5.
 删除 ondraw(atl_drawinfo& di) 方法的主体。
 
6.
 然后,在该方法声明的末尾添加一个分号(因为您将执行自己的 ondraw)。ondraw 方法应如下所示。

hresult ondraw(atl_drawinfo& di);
 
7.
 在消息映射段中插入以下消息处理程序:begin_msg_map(cmyctl)。此代码使得 activex 控件可以相应地处理自己的用户单击和响应。

message_handler(wm_lbuttondown, onlbuttondown);
 
8.
 cmyctl 类的完整消息映射段应如下所示。

begin_msg_map(cmyctl)message_handler(wm_lbuttondown, onlbuttondown);chain_msg_map(ccomcontrol<cmyctl>)default_reflection_handler()end_msg_map()
 
9.
 在 messagemap 段下面添加以下处理程序原型。

lresult onlbuttondown(uint, wparam, lparam, bool&){
switch(m_currentcolor)  {case 1:m_currentcolor = 2;m_clrfillcolor = rgb(0, 0xff, 0);break;case 2:m_currentcolor = 1;m_clrfillcolor = rgb(0xff, 0xff, 0);break;  }  put_fillcolor(m_clrfillcolor);return 0;}
 
10.
 打开 myctl.cpp。
 
11.
 将以下代码复制并粘贴到 myctl.cpp。此代码用于绘制 activex 控件。

#define gsc_mask 0x80000000l#define gsc_setbit 0x04000000l
inline hresult wce_oletranslatecolor(ole_color clr, hpalette, colorref *retclr){
*retclr = (clr & gsc_mask) ?getsyscolor(clr & (~gsc_mask) gsc_setbit) :(colorref)(clr & 0x00ffffff);return s_ok;}
hresult cmyctl::ondraw(atl_drawinfo& di){
rect& rc = *(rect*)di.prcbounds;hdc hdc  = di.hdcdraw;
colorref  colfore;hbrush    holdbrush, hbrush;hpen    holdpen, hpen;
// 将 m_colfore 转换为 colorref 类型wce_oletranslatecolor(m_clrfillcolor, null, &colfore);// 创建并选择颜色来绘制圆hpen = (hpen)getstockobject(black_pen);holdpen = (hpen)selectobject(hdc, hpen);
const double pi = 3.14159265358979;point  ptcenter;double  dblradiusx = (rc.right - rc.left) / 2;double  dblradiusy = (rc.bottom - rc.top) / 2;double  dblangle = 3 * pi / 2;      // 从顶端开始double  dbldiff  = 2 * pi / m_nsides;  // 使每条边转动角度将  // 使ptcenter.x = (rc.left + rc.right) / 2;ptcenter.y = (rc.top + rc.bottom) / 2;  // 计算每条边对应的点for (int i = 0; i < m_nsides; i++)  {m_arrpoint[i].x = (long)(dblradiusx * cos(dblangle) + ptcenter.x + 0.5);m_arrpoint[i].y = (long)(dblradiusy * sin(dblangle) + ptcenter.y + 0.5);dblangle += dbldiff;  }
// 创建并选择将用于填充多边形的   // 画笔hbrush    = createsolidbrush(colfore);holdbrush = (hbrush)selectobject(hdc, hbrush);selectobject(hdc, hbrush);polygon(hdc, &m_arrpoint[0], m_nsides);
// 选择回原来的笔和画笔,删除我们创建的   // 画笔selectobject(hdc, holdpen);selectobject(hdc, holdbrush);deleteobject(hbrush);
return s_ok;}
 
12.
 查找以下属性 get 函数。

stdmethodimp cmyctl::get_sides(short* pval)
 
13.
 然后,将以下代码添加到函数主体(在 return s_ok 之前)

*pval = m_nsides;
 
14.
 查找以下属性 put 函数:

stdmethodimp cmyctl::put_sides(short newval)
 
15.
 然后,将以下代码添加到函数主体(在 return s_ok 之前)

atlassert(newval > 2 && newval < 101);m_nsides = newval;fireviewchange();
 
16.
 打开 stdafx.h。
 
17.
 在 stdafx.h 开头附近,在 #pragma once 之下添加以下代码。此代码将防止 atl 8.0 for devices 在针对非 dcom 平台使用线程模型编译项目时抛出 #error。

#define _ce_allow_single_threaded_objects_in_mta
 
18.
 单击 build(生成),然后单击 buildsolution(生成解决方案)以生成项目。确保不存在任何编译或链接错误。

对 activex 项目进行签名的步骤

1.
 在 solution explorer(解决方案资源 管理 器)中,右键单击 ctl1 项目,然后单击 properties(属性)。
 
2.
 展开 authenticode signing(authenticode 签名),然后选择 general(常规)。
 
3.
 将 authenticode signature(authenticode 签名)属性更改为 yes(是)。
 
4.
 在 certificate(证书)列表中,单击省略号按钮。
 
5.
 在 select certificate(选择证书)对话框中,单击 managecertificates(管理证书)。
 
6.
 在 managecertificates(管理证书)对话框中,单击 import(导入)。

certificate import wizard(证书导入向导)将打开。
 
7.
 单击 next(下一步)。
 
8.
 在 file to import(要导入的文件)页中,单击 browse(浏览)。
 
9.
 浏览到 c:program filesmicrosoft visual studio 8smartdevicessdksdktools estcertificates。
 
10.
 在 files of type(文件类型)组合框中,将文件类型更改为 personal information exchange (*.pfx,*.p12),如下图所示。

11.
 选择 testcert_privileged。
 
12.
 单击 open(打开)。
 
13.
 在 file to import(要导入的文件)页中,单击 next(下一步)。
 
14.
 保留密码为空,然后单击 next(下一步)。
 
15.
 确保选择了 place all certificates in the following store(将所有证书放置在以下存储区中)选项按钮,并将 certificate store(证书存储区)属性设置为 personal(个人)。
 
16.
 单击 next(下一步)。
 
17.
 单击 finish(完成)。
 
18.
 当 import was successful(导入成功)对话框出现时,单击 ok(确定)。
 
19.
 关闭 managed certificates(托管证书)对话框。
 
20.
 在 select certificate(选择证书)对话框中,您现在应该会看到 smartphone 2003 privileged test 证书,选择该证书,然后单击 ok(确定)。

每次生成该项目时都应该使用此证书对其进行签名。
 
21.
 在 ctl1 property pages(ctl1 属性页)上,在 provision device(供应设备)列表中选择 privileged certificate store(特许证书存储区),如下图所示。

22.
 单击 ok(确定)。

每次部署该项目时,都会为设备的 privileged certificate store(特许证书存储区)配置选定的证书。

部署和注册 activex 控件的步骤

• 在 solution explorer(解决方案资源管理器)中,右键单击 ctl1 项目,然后选择 deploy(部署)。仿真器将打开,并将部署和注册 activex 控件。

 

 

上下文章:

 

上一篇文章: 04年下半年 软件设计师上午试卷 下一篇文章: 历年高级程序员试题 五

相关文章:

  • 强力推荐:Oracle9i专题讲座
  • Java网络编程之URI、URL研究专题一
  • Java网络编程之URI、URL研究专题八
  • Java网络编程之URI、URL研究专题七
  • Java网络编程之URI、URL研究专题五

相关软件:

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

认证考试分类导航

  • 微软认证
  • 计算机等级考试
  • 软件水平考试
  • 思科认证
  • Oracle认证
  • Linux认证
  • JAVA认证
  • 网络工程师
  • 系统工程师
  • 程序员

本类经典文章推荐

  • 软考系统分析师考试须知
  • C++箴言:绝不在构造或析构期调用...
  • 数据结构:判别是否为二叉排序树的...
  • 一个程序员的成长的六个阶段
  • 程序员英语试题常见硬件名和设备名
  • 从一个程序出发详细研究DataReader
  • 如何判断程序处于运行环境还是调试...
  • 程序高手必读:写好C程序的10条秘...
  • 程序员介绍:程序员的“素质”是什...
  • C++箴言:让=返回一个*this的引用

程序员阅读排行

  • 数据结构:判别是否为二叉排序树的...
  • VC++动态链接库(DLL)编程深入浅出...
  • VC++动态链接库(DLL)编程深入浅出...
  • 程序员考试:证书样本
  • 补码加、减运算规则及溢出判断
  • 数据结构:栈和递归求两顶点所有简...
  • DirectX8.0简介(8)
  • 水滴石穿·C语言之代码检查工...
  • 数据结构:打印线索二叉树的中序遍...
  • DirectX8.0简介(3)

认证考试阅读总排行

  • 全国计算机等级考试一级模拟试题01
  • 全国计算机等级考试一级模拟试题10
  • 全国计算机等级考试一级模拟试题08
  • MCSD简介
  • 全国计算机等级考试一级考试最新模...
  • 全国计算机等级考试一级模拟试题07
  • 全国计算机等级考试一级模拟试题02
  • 全国计算机等级考试一级模拟试题06
  • 全国计算机等级考试一级模拟试题03
  • 一级(WINDOWS)试题解析-Word篇

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有