65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 eVC++ 3.0 创建 MDI 程序

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.17/5 (6投票s)

2003 年 7 月 5 日

CPOL

2分钟阅读

viewsIcon

60004

downloadIcon

310

一篇文章,说明如何在 WinCE 中使用 eVC++ 3.0 编译器为 PocketPC 2002 创建多个视图。

Sample Image - MDIWinCE.jpg

引言

WinCE for PocketPC 2002 通常仅支持 SDI MFC 应用程序。通过一些技巧,您可以将其转换为 MDI 应用程序,方法是在必要时切换视图。由于屏幕空间有限,您仍然无法同时看到多个视图。您可以选择隐藏当前视图、销毁当前视图,或者隐藏一些并销毁另一些。视图是动态创建的,内存中视图的数量没有限制——当然,限制将是硬件中的内存量。这些视图可以是 eVC++ 3.0 编译器支持的任何类型。

可以有任意数量的不同视图类,但任何给定视图只有一个实例。因此,您可以拥有以下视图的每个实例:CMyFirstViewCMySecondViewCMyThirdView,但您不能拥有 CMyFirstView 的两个实例。原因是 OnSelectNextView() 会搜索其当前视图列表,以查看是否已存在所需类别的视图。如果存在,则将其激活。否则,如果不存在,则创建所需类类型的新实例并将其添加到列表中。

使用代码

以下是在您的项目中实现该类的步骤。

  1. 创建一个新的 MFC 文档/视图项目,或使用现有项目。
  2. 将两个文件 SVMainFrame.cpp 和 SVMainFrame.h 复制到项目目录中,并将它们添加到项目中。
  3. 打开 CMainFrm.h 并将 CFrameWnd 替换为 CSFMainFrame
class CMainFrame : public CSVMainFrame
{
  // class definition here.
{
  1. 在 CMainFrm.h 中删除 CCeCommandBar m_wndCommandBar 对象,因为它是在 CSVMainFrame.h 中声明的。
  2. 在 CMainFrm.cpp 中,将文件中所有出现的 CMainWnd 替换为 CSVMainFrame。该类在文件中出现两次。
  3. 根据需要创建尽可能多的视图,添加导航按钮或菜单项,以允许用户在视图列表中向前或向后移动。如果您创建 CFormView 类,请确保将样式设置为 Child 并将边框设置为 None。
  4. 要在一个视图链中前进,请调用 OnSelectNextView() 方法,如下所示。在此示例中,m_selection 是一个单选按钮,其中 0 表示隐藏窗口,非 0 表示销毁当前窗口
void CSelViewDemoView::OnNextViewButton() 
{
    UpdateData();
    CMainFrame* pMFrame = (CMainFrame*)GetParentFrame();
    pMFrame->OnSelectNextView(RUNTIME_CLASS(CMySecondView), 
                m_selection == 0 ? AIT_HIDE_WINDOW : AIT_DESTROY_WINDOW);
}
  1. 要向后导航到视图链中,请调用 OnSelectPrevView()。在此示例中,m_selection 的含义与前面的示例相同。如果没有先前的视图,则当前视图不会更改。
void CMySecondView::OnPreviousView() 
{
     UpdateData();
     CMainFrame* pMFrame = (CMainFrame*)GetParentFrame();
     pMFrame->OnSelectPrevView(m_selection == 0 ? AIT_HIDE_WINDOW : 
                                                  AIT_DESTROY_WINDOW);
    
}
© . All rights reserved.