eMbedded Visual C++ 应用程序迁移到 Visual Studio 2005

Microsoft Corporation

适用于:

Microsoft eMbedded Visual C++

基于 Windows Mobile 的设备

Microsoft Visual Studio 2005

摘要:通过在这一自己控制进度的动手体验中使用 Visual Studio 2005,告别 Microsoft eMbedded Visual C++,并生成基于 Windows Mobile 的本机应用程序。您将把 eMbedded Visual C++ 项目迁移到 Visual Studio 2005,使其能够识别方向,通过使用设备仿真器调试该应用程序,并生成用于部署的 CAB 文件。完成此体验之后,您就可以开始使用 Visual Studio 2005 作为新的 IDE 来进行基于 Windows Mobile 的本机应用程序开发。此体验的技术等级为 Level 200(中级),您在 90 分钟内应该能够完成。

请从 Microsoft 下载中心下载 MED303_Migrate_EVC_App_VS2K5.MSI。

本页内容

体验 1:迁移 eMbedded Visual C++ Windows Mobile Win32 项目

体验 1 总结

体验 2:迁移 eMbedded Visual C++ MFC Windows Mobile 应用程序

附录 A:终止在设备或仿真器上运行的应用程序

体验 2 总结

要完成此练习,您需要具备:

  • Windows XP Professional。

    此体验要求具备 Windows XP Professional。

  • Visual Studio 2005。

    此体验要求具备 Visual Studio 2005 Standard Edition、Professional Edition 或 Team System Edition。使用任何 Express Edition 将无法进行此体验。如果您不具备适当的 Visual Studio 2005 版本,请访问 Visual Studio 2005 Developer Center(英文)以了解如何获取该版本。

  • ActiveSync 4.0。

    通过 ActiveSync 4.0 可以在基于 Windows Mobile 的设备与您的计算机之间进行连接。

  • Windows Mobile 5.0 SDK。

    通过 Windows Mobile 5.0 SDK for Pocket PC 和 Windows Mobile 5.0 SDK for Smartphone 能够在 Visual Studio 2005 中开发基于 Windows Mobile 的设备:

    下载和安装 Windows Mobile 5.0 SDK for Pocket PC

    下载和安装 Windows Mobile 5.0 SDK for Smartphone

重要信息:安装体验文件。此体验要求预先安装了 Visual Studio 2005 项目、代码和数据文件。要将这些文件安装到正确的路径,请运行以下安装程序:注意:如果您在先前的动手体验中使用了仿真器,则在开始此体验之前,应当先对仿真器进行硬复位。在仿真器上,单击 File(文件),指向 Reset(复位),然后单击 Hard(硬)。

如果在部署过程中收到错误,指出正在使用该进程或文件,这意味着程序仍在仿真器上运行着,必须先退出程序,然后才能部署和运行新的副本。在部署仿真器的体验中,随时都可能出现此错误。有关退出正在运行的应用程序的说明,请参见此体验的附录。

体验 1:迁移 eMbedded Visual C++ Windows Mobile Win32 项目

此体验的目标是将一个 Microsoft eMbedded Visual C++ (eVC) Pocket PC 2003 应用程序迁移到 Visual Studio 2005,并为其创建智能设备 CAB 项目。

  • 练习 1 – 将 eMbedded Visual C++ Windows Mobile Win32 项目迁移到 Visual Studio 2005

  • 练习 2 – 创建智能设备 CAB 项目

练习 1 :将 eMbedded Visual C++ Windows Mobile Win32 项目迁移到 Visual Studio 2005

在 Visual Studio 2005 中打开 eMbedded Visual C++ 项目的步骤

  1. 在 Visual Studio 2005 中,选择 File | Open | Project/Solution(文件 | 打开 | 项目/解决方案)。

  2. 浏览到 C:\HOL\dirtree。

  3. 选择 dirtree.vcp,然后单击 Open(打开)。

  4. 在 Visual Studio Conversion Wizard(Visual Studio 转换向导)欢迎页面上,单击 Finish(完成),然后单击 Close(关闭)。

  5. 在 Solution Explorer(解决方案资源管理器)中,右键单击 DirTree 项目,然后单击 Properties(属性)。

  6. 展开 Configuration Properties | Linker | Input(配置属性 | 链接器 | 输入)。

  7. 在 Configuration(配置)下拉列表框中,选择 All Configurations(所有配置)。

  8. 在 Platform(平台)下拉列表框中,选择 All Platforms(所有平台)。

  9. 单击 Ignore Specific Library(忽略特定库)属性中的省略号,如下图所示。

  10. 在文本框中,键入 oldnames.lib,然后单击 OK(确定)。

  11. 单击 Additional Dependencies(附加依赖项)属性中的省略号,然后添加以下 .lib 文件:commctrl.lib coredll.lib aygshell.lib secchk.lib ccrtrtti.lib

  12. 单击 OK(确定)。

创建方向识别功能的步骤

  1. 在 Solution Explorer(解决方案资源管理器)中,展开 DirTree | Resource Files。

  2. 双击 treedir.rc 文件。

  3. 在 Resource View(资源视图)中,展开 treedir.rc | Dialog。

  4. 右键单击 IDD_ABOUT 对话框,然后选择 Copy(复制)。

  5. 选择 Dialog 文件夹,然后单击 Paste(粘贴)。

  6. 选择 IDD_ABOUT1,然后单击 Properties(属性)选项卡。

  7. 在 Properties(属性)窗口,将 ID 值从 IDD_ABOUT1 更改为 IDD_ABOUT_WIDE。

  8. 在 Dialog Editor(对话框编辑器)中,调整 IDD_ABOUT_WIDE 的大小,使其约为 215 x 135,如下图所示。(可以在 IDE 的右下角查看对话框的大小。)

  9. 将图标移动到文本右侧,如上图所示。

  10. 在 resource.h 中,添加下行。

    #define IDD_ABOUT_WIDE 200

  11. 在 globals.h 中,添加下行。

    #include <DeviceResolutionAware.h>

  12. 在 wndproc.cpp 中,导航至 void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) 并将以下内容:

    DialogBox(g_hInstance, MAKEINTRESOURCE(IDD_ABOUT), hwnd, (DLGPROC)AboutDlgProc);

    替换为:

    DialogBox(g_hInstance, DRA::GetDisplayMode() != DRA::Portrait ? MAKEINTRESOURCE(IDD_ABOUT_WIDE) :MAKEINTRESOURCE(IDD_ABOUT), hwnd, (DLGPROC)AboutDlgProc);

  13. 导航至 LRESULT CALLBACK AboutDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 并添加以下 CASE 语句。

    case WM_SIZE:DRA::RelayoutDialog(g_hInstance, hwnd, DRA::GetDisplayMode() != DRA::Portrait ?MAKEINTRESOURCE(IDD_ABOUT_WIDE) :MAKEINTRESOURCE(IDD_ABOUT));return (TRUE);}

  14. 现在,LRESULT CALLBACK AboutDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 应为如下所示:

    LRESULT CALLBACK AboutDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam){SHINITDLGINFO shidi;switch(uMsg) {case WM_INITDIALOG://在 Pocket PC 设备上以常规方式创建所有对话框,使其成为 //上端带有// OK(确定)按钮的全屏对话框。 // 创建一个 Done(完成)按钮并设定其大小。shidi.dwMask = SHIDIM_FLAGS;shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN;shidi.hDlg = hwnd;//初始化基于 dwFlags 参数的对话框SHInitDialog(&shidi);// 如果将重点设置在对话框的第一个空间上,应返回非零值,// 否则,如果此例程手动设置重点,则返回零。return (TRUE); case WM_COMMAND:switch (LOWORD(wParam)) {case IDOK:EndDialog(hwnd, 0);break;case IDCANCEL:EndDialog(hwnd, 0);break; }return (TRUE);case WM_SIZE:DRA::RelayoutDialog(g_hInstance, hwnd, DRA::GetDisplayMode() != DRA::Portrait ?MAKEINTRESOURCE(IDD_ABOUT_WIDE) :MAKEINTRESOURCE(IDD_ABOUT));return (TRUE); }return (FALSE);}

在 Pocket PC 2003 上运行应用程序的步骤

  1. 在 Configuration Manager(配置管理器)中,确保选择了 Pocket PC 2003 (ARMV4),如下图所示。

  2. 在 Device Deployment(设备部署)工具栏中,确保选择了 Pocket PC 2003 SE Emulator(Pocket PC 2003 SE 仿真器),如下图所示。

  3. 按 F5。

    重要信息:如果在部署过程中收到错误,指出正在使用该进程或文件,这意味着程序仍在仿真器上运行着,必须先退出程序,然后才能部署和运行新的副本。在部署仿真器的体验中,随时都可能出现此错误。有关退出正在运行的应用程序的说明,请参见此体验的附录。

  4. 在仿真器中启动应用程序之后,在应用程序中选择 Help | About(帮助 | 关于),如下图所示。

  5. 通过按 Calendar(日历)按钮(功能键 2),旋转仿真器,如下图所示。

  6. 监视横向形式的 About(关于)框加载完成。

  7. 单击 Debug(调试),然后单击 Stop Debugging(停止调试)以终止应用程序。

在 Windows Mobile 5.0 Pocket PC 上运行应用程序的步骤

  1. 在 Configuration Manager(配置管理器)中,确保选择了 Windows Mobile 5.0 Pocket PC SDK (ARMV4I)。

  2. 在 Device Deployment(设备部署)工具栏中,确保选择了 Windows Mobile 5.0 Pocket PC Emulator(Windows Mobile 5.0 Pocket PC 仿真器)。

  3. 按 F5。

  4. 在仿真器中启动应用程序之后,在应用程序中选择 Help | About(帮助 | 关于)。

  5. 通过按 Calendar(日历)按钮,旋转仿真器。

    监视横向形式的 About(关于)框加载完成。

练习 2 :创建智能设备 CAB 项目

创建智能设备 CAB 项目的步骤

  1. 在 Solution Explorer(解决方案资源管理器)中,右键单击解决方案,然后选择 Add | New Project(添加 | 新建项目)。

  2. 展开 Other Project Types | Setup and Deployment(其他项目类型 | 安装和部署)。

  3. 选择 Smart Device CAB Project(智能设备 CAB 项目),并在 Name(名称)文本框中输入 DirTreeSetup,然后单击 OK(确定)。

  4. 在 Solution Explorer(解决方案资源管理器)中,右键单击新创建的 DirTreeSetup 项目,然后选择 View | File System(视图 | 文件系统)。

  5. 在 File System(文件系统)窗口中,右键单击 Program Files 文件夹,然后选择 Add | Folder(添加 | 文件夹)。

  6. 将新添加的文件夹命名为 DirTree。

  7. 右键单击 DirTree 文件夹,然后选择 Add | Project Output(添加 | 项目输出)。

  8. 在 Project(项目)下拉列表框中,确保选择了 DirTree,然后单击 Primary Output(主输出)。

  9. 在 Configuration(配置)下拉列表框中,确保选择了 (Active)([活动])。如果您在先前的任务中生成了 DirTree 项目的发行版本,则可以在此 Configuration(配置)下拉列表框中选择 Release(发行)。

  10. 单击 OK(确定)。

  11. 在 Solution Explorer(解决方案资源管理器)中,右键单击 DirTreeSetup 项目,然后选择 Build(生成)。

  12. 可以在 My Documents\Visual Studio 2005\Projects\DirTree\DirTreeSetup\<config>(其中“<config>”为 Release [发行] 或 Debug [调试])中找到 DirTreeSetup.cab 文件。

返回页首

体验 1 总结

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

  • 练习 1 – 将 eMbedded Visual C++ Windows Mobile Win32 项目迁移到 Visual Studio 2005

  • 练习 2 – 创建智能设备 CAB 项目

在此体验中,您将一个 eMbedded Visual C++ Pocket PC 2003 应用程序迁移到了 Visual Studio 2005,对其进行了编译,并在 Pocket PC 2003 和 Microsoft Windows Mobile 5.0 Pocket PC 上运行了该应用程序。同时,通过在应用程序处于横向模式时使 About(关于)框以“加宽”形式加载,还向应用程序添加了方向识别功能。

返回页首

体验 2:迁移 eMbedded Visual C++ MFC Windows Mobile 应用程序

注意:许多典型问题应已涵盖在“What's New in Visual Studio 2005 for Native Developers”和“将 Microsoft eMbedded Visual C++ 项目迁移到 Visual Studio 2005”这两本白皮书中。如果用户按 CTRL + 空格键获得 IntelliSense 以完成一行代码,则 IDE 可能会冻结。出现这种情况时,只需告诉用户这是一个已知的错误,不要按 CTRL + 空格键。

此体验的目标是将一个 Microsoft eMbedded Visual C++ MFC Pocket PC 2003 应用程序迁移到 Visual Studio 2005,并为其创建智能设备 CAB 项目。

  • 练习 1 – 迁移基于 Windows Mobile 的 eMbedded Visual C++ MFC 应用程序

  • 练习 2 – 创建智能设备 CAB 项目

练习 1 :迁移基于 Windows Mobile 的 eMbedded Visual C++ MFC 应用程序

在 Visual Studio 2005 中打开 eMbedded Visual C++ 项目的步骤

  1. 在 Visual Studio 2005 中,选择 File | Open | Project/Solution(文件 | 打开 | 项目/解决方案)。

  2. 浏览到 C:\HOL\chkbook。

  3. 选择 chkbook.vcp,然后单击 Open(打开)。

  4. 单击 Finish(完成),然后单击 Close(关闭)。

迁移代码的步骤(第 I 部分)

  1. 在 checkdlg.cpp 中,将三次出现的 _tcslen 全部替换为 ::wcslen。

    需要执行此操作以区分平台 API 和 MFC API。

  2. 在 chkbkdoc.cpp 中,由于 MFC 8.0 for Devices 中不支持 Dump(转储),所以需要注释以下代码。

    Void CCheckBookDoc::Dump(CDumpContext& dc) const{CDocument::Dump(dc);}

  3. 在 chkbkdoc.h 中,注释以下代码。

    virtual void Dump(CDumpContext& dc) const;

  4. 在 chkbkedt.cpp 中,将以下代码:

    static bSetTabStops = FALSE;

    更改为:

    static BOOL bSetTabStops = FALSE;

    由于 Visual Studio 2005 设备编译器具有更加紧密的一致性特征(相对 eMbedded Visual C++ 编译器而言),因此需要这样做。

  5. 在 chkbkvw.cpp 中,注释以下代码。

    void CCheckBookView::Dump(CDumpContext& dc) const{CView::Dump(dc);}

    另外还要注释以下代码。

    m_dlg.m_bFullScreen=FALSE;m_dlg.m_bFullScreen is always set to True for Windows Mobile platforms (set in dlgcore.cpp)

  6. 在 chkbkvw.h 中,注释以下代码。

    virtual void Dump(CDumpContext& dc) const;

迁移资源的步骤

  1. 在 Solution Explorer(解决方案资源管理器)中,右键单击 chkbook.rc 文件,然后选择 View Code(查看代码)。

  2. 在 Menu 段中,将以下代码:

    IDR_MAINFRAME MENU PRELOAD DISCARDABLE BEGINPOPUP "&File"BEGINMENUITEM "&New...\tCtrl+N", ID_FILE_NEWMENUITEM "&Open...\tCtrl+O", ID_FILE_OPENMENUITEM SEPARATORMENUITEM "E&xit", ID_APP_EXITENDPOPUP "&Edit"BEGINMENUITEM "&Commit Check", ID_EDIT_COMMITMENUITEM SEPARATORMENUITEM "&New Check", ID_EDIT_NEW_CHECKMENUITEM SEPARATORMENUITEM "Ne&xt Check", ID_NEXT_CHECKMENUITEM "&Prev Check", ID_PREV_CHECKENDPOPUP "&View"BEGINMENUITEM "&Check", ID_VIEW_CHECKMENUITEM "&Book", ID_VIEW_BOOKENDPOPUP "&Help"BEGINMENUITEM "&About...", ID_APP_ABOUTENDEND

    替换为:

    IDR_MAINFRAME MENU PRELOAD DISCARDABLE BEGINPOPUP "Menu"BEGINPOPUP "File"BEGINMENUITEM "New...", ID_FILE_NEWMENUITEM "Open...", ID_FILE_OPENMENUITEM SEPARATORMENUITEM "Exit", ID_APP_EXITENDPOPUP "Edit"BEGINMENUITEM "Commit Check", ID_EDIT_COMMITMENUITEM SEPARATORMENUITEM "New Check", ID_EDIT_NEW_CHECKMENUITEM SEPARATORMENUITEM "Next Check", ID_NEXT_CHECKMENUITEM "Prev Check", ID_PREV_CHECKENDPOPUP "View"BEGINMENUITEM "Check", ID_VIEW_CHECKMENUITEM "Book", ID_VIEW_BOOKENDPOPUP "Help"BEGINMENUITEM "About...", ID_APP_ABOUTENDENDEND

  3. 注释以下代码。

    STRINGTABLE DISCARDABLE BEGINID_FILE_MRU_FILE1 "Open this document"ID_FILE_MRU_FILE2 "Open this document"ID_FILE_MRU_FILE3 "Open this document"ID_FILE_MRU_FILE4 "Open this document"ID_FILE_MRU_FILE5 "Open this document"ID_FILE_MRU_FILE6 "Open this document"ID_FILE_MRU_FILE7 "Open this document"ID_FILE_MRU_FILE8 "Open this document"ID_FILE_MRU_FILE9 "Open this document"ID_FILE_MRU_FILE10 "Open this document"ID_FILE_MRU_FILE11 "Open this document"ID_FILE_MRU_FILE12 "Open this document"ID_FILE_MRU_FILE13 "Open this document"ID_FILE_MRU_FILE14 "Open this document"ID_FILE_MRU_FILE15 "Open this document"ID_FILE_MRU_FILE16 "Open this document"END

  4. 在 String Table 段中,在最后一个 STRINGTABLE DISCARDABLE 段的末尾添加以下行。

    IDS_MENU "Menu"IDS_NEW "New"

将 RCDATA 添加到 RC2 文件的步骤

  1. 在 Solution Explorer(解决方案资源管理器)中,右键单击 Resource Files 文件夹,然后单击 Add | Existing Item(添加 | 现有项)。

  2. 双击 Chkbook 示例目录中的 Res 目录,然后将 Files of type(文件类型)更改为 All Files (*.*)(所有文件(*.*))。

  3. 选择 chkbook.rc2,然后单击 Add(添加)。

  4. 在 Solution Explorer(解决方案资源管理器)中,右键单击 chkbook.rc2,然后选择 View Code(查看代码)。

  5. 在 Add Manually Edited Resources Here(在此处添加手动编辑的资源)区域中,添加以下代码。

    IDR_MAINFRAME RCDATABEGINIDR_MAINFRAME, 2, I_IMAGENONE, ID_FILE_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE,IDS_NEW, 0, NOMENU,I_IMAGENONE, IDM_MENU, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE,IDS_MENU, 0, 0,END

迁移代码(第 II 部分)

  1. 在 resource.h 中,添加以下行。

    #define IDS_NEW 70000define IDS_MENU 70001#define IDM_MENU 70002

  2. 在 chkrec.cpp 中,将三次出现的以下内容:

    if (m_file.m_hFile != (UINT)CFile::hFileNull)

    全部更改为:

    if (m_file.m_hFile != (HANDLE)CFile::hFileNull)

  3. 在 chkrec.h 中,将以下内容:

    m_nRecordLength = sizeof(CCheckRecord); if (m_file.m_hFile != -1) m_file.Close();

    更改为:

    m_nRecordLength = sizeof(CCheckRecord); if (m_file.m_hFile != (HANDLE) -1) m_file.Close();

  4. 在 mainfrm.cpp 中,做出以下更改:

    • 注释以下代码。

      void CMainFrame::Dump(CDumpContext& dc) const{CFrameWnd::Dump(dc);}

    • 将整个 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 函数替换为以下代码。

      int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (CFrameWnd::OnCreate(lpCreateStruct) == -1)return -1;if (!m_wndCommandBar.Create(this) ||!m_wndCommandBar.InsertMenuBar(IDR_MAINFRAME) ||!m_wndCommandBar.AddAdornments(dwAdornmentFlags)) {TRACE0("Failed to create CommandBar\n");return -1; // 无法创建 }m_wndCommandBar.SetBarStyle(m_wndCommandBar.GetBarStyle() | CBRS_SIZE_FIXED);return 0;}

    • 将以下行添加到 mainfrm.cpp 的顶部。

      DWORD dwAdornmentFlags = 0;

  5. 在 mainfrm.h 中,做出以下更改:

    • 将以下内容:

      CCeCommandBar m_wndCommandBar;

      更改为:

      CCommandBar m_wndCommandBar;

    • 注释以下代码。

      virtual void Dump(CDumpContext& dc) const;

更改项目属性的步骤

  1. 在 Solution Explorer(解决方案资源管理器)中,右键单击该项目,然后选择 Properties(属性)。

  2. 在 Configuration(配置)下拉列表框中,选择 All Configurations(所有配置)。

  3. 在 Platform(平台)下拉列表框中,选择 All Platforms(所有平台)。

  4. 展开 Linker | Advanced | Entry Point(链接器 | 高级 | 入口点)。

  5. 将 wWinMainCRTStartup 更改为 WinMainCRTStartup。

  6. 展开 C/C++ | Preprocessor(C/C++ | 预处理器)。

  7. 在 Platform(平台)下拉列表框中,选择 Multiple Platforms(多个平台)。

  8. 在 Multiple Platforms (多个平台)对话框中,清除 Smartphone 2003 (ARMV4) 和 Windows Mobile 5.0 Smartphone SDK (ARMV4I) 复选框。

  9. 单击 Preprocessor Definitions(预处理器定义)属性中的省略号,如下图所示。

  10. 将以下条目添加到列表中。

    _WIN32_WCE_PSPC

  11. 单击 OK(确定),然后单击 Apply(应用)。

在 Pocket PC 2003 上运行应用程序的步骤

  • 在 Configuration Manager(配置管理器)中,确保选择了 Pocket PC 2003 (ARMV4)。

  • 在 Device Deployment(设备部署)工具栏中,确保选择了 Pocket PC 2003 SE Emulator(Pocket PC 2003 SE 仿真器)。

  • 按 F5。

在 Windows Mobile 5.0 Pocket PC 上运行应用程序的步骤

  1. 在 Configuration Manager(配置管理器)中,确保选择了 Windows Mobile 5.0 Pocket PC SDK (ARMV4I),如下图所示。

  2. 在 Device Deployment(设备部署)工具栏中,确保选择了 Windows Mobile 5.0 Pocket PC Emulator(Windows Mobile 5.0 Pocket PC 仿真器),如下图所示。

  3. 按 F5。

练习 2 :创建智能设备 CAB 项目

创建智能设备 CAB 项目的步骤

  1. 在 Solution Explorer(解决方案资源管理器)中,右键单击解决方案,然后选择 Add | New Project(添加 | 新键项目)。

  2. 展开 Other Project Types | Setup and Deployment(其他项目类型 | 安装和部署)。

  3. 选择 Smart Device CAB Project(智能设备 CAB 项目),然后在 Name(名称)文本框中键入 ChkbookSetup。

  4. 在 Solution Explorer(解决方案资源管理器)中,右键单击新创建的 ChkbookSetup 项目,然后选择 View | File System(视图 | 文件系统)。

  5. 在 File System(文件系统)窗口中,右键单击 Program Files 文件夹,然后选择 Add | Folder(添加 | 文件夹)。

  6. 将新添加的文件夹命名为 Chkbook。

  7. 右键单击 Chkbook 文件夹,然后选择 Add | Project Output(添加 | 项目输出)

  8. 在 Project(项目)下拉列表框中,确保选择了 Chkbook,然后单击 Primary Output(主输出)。

  9. 在 Configuration(配置)下拉列表框中,确保选择了 (Active)([活动])。如果您在先前的任务中生成了 Chkbook 项目的 Release(发行)版本,则可以在此 Configuration(配置)下拉列表框中选择 Release(发行)。

  10. 单击 OK(确定)。

  11. 在 Solution Explorer(解决方案资源管理器)中,右键单击 ChkbookSetup 项目,然后选择 Build(生成)。

  12. 可以在 My Documents\Visual Studio 2005\Projects\Chkbook\ChkbookSetup\<config>(其中“<config>”为 Release [发行] 或 Debug [调试])中找到 ChkbookSetup.cab 文件。

返回页首

附录 A:终止在设备或仿真器上运行的应用程序

此任务说明了如何终止在设备或仿真器上运行的应用程序。如果在没有附加调试器的情况下启动了应用程序,并且需要终止该应用程序以便可以部署新的应用程序副本,则会用到此任务。将通过在 Visual Studio 中使用远程进程查看器这一远程工具来终止应用程序。

需要知道可执行文件的名称才能终止进程。大多数情况下,此名称就是 Visual Studio 项目的名称。如果您不确定可执行文件的名称,则可以在项目属性中查找。

  1. 从 Visual Studio 中,选择 Project(项目),然后选择 xxx Properties(xxx 属性),其中 xxx 代表当前项目的名称。

  2. 注意 Assembly Name(程序集名称)字段中的值。此值是可执行文件在设备或仿真器上运行时将使用的名称。

  3. 关闭 Properties(属性)对话框。

    现在,您就可以终止进程了。

  4. 从 Start(开始)菜单中,单击 Start > Microsoft Visual Studio 2005 > Visual Studio Remote Tools > Remote Process Viewer(开始 > Microsoft Visual Studio 2005 > Visual Studio 远程工具 > 远程进程查看器)。

  5. 收到 Select a Windows CE Device(选择一个 Windows CE 设备)对话框提示后,选择正在运行该应用程序的仿真器或设备(如下图所示),然后单击 OK(确定)。

  6. 连接到仿真器或设备之后,在 Remote Process Viewer(远程进程查看器)的顶部窗格中找到您要终止的应用程序,如下图所示。

    可能需要加宽 Process(进程)列(最左边的列)以完全显示出进程名称。

  7. 单击进程名称以选择进程。

  8. 要终止进程,请从 Remote Process Viewer(远程进程查看器)菜单中选择 File > Terminate Process(文件 > 终止进程)。

    注意:在单击 Terminate Process(终止进程)之前,请确保选择了正确的进程。终止不正确的进程可能会致使设备或仿真器不可用,这样就必须将其复位才能再次使用。

  9. 通过在 Remote Process Viewer(远程进程查看器)菜单上选择 Target > Refresh(目标 > 刷新)并再次滚动浏览顶部窗格,来验证进程是否已终止。如果该应用程序名仍然存在,则说明进程未被终止,您需要重复以上步骤。

注意:大多数进程只需执行一次操作即可终止;但是,根据应用程序状态的不同,偶尔会需要执行两次操作才能终止。

返回页首

体验 2 总结

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

  • 练习 1 – 迁移基于 Windows Mobile 的 eMbedded Visual C++ MFC 应用程序

  • 练习 2 – 创建智能设备 CAB 项目

在此体验中,您将一个 eMbedded Visual C++ (eVC) MFC Pocket PC 2003 应用程序迁移到了 Visual Studio 2005。另外,还对应用程序代码进行了更改,将端口从 MFC 3.0 for Devices 改为 MFC 8.0 for Devices。

posted @ 2008-12-10 20:17  张伟——程序员  阅读(533)  评论(0编辑  收藏  举报