none
VisualStudio2008,MFC智能设备应用程序,添加ActiveX控件不能正常运行 RRS feed

  • 问题

  • 用VisualStudio2008建立MFC智能设备应用程序(Visual C++语言),在对话框上添加FlexGrid控件不能正常运行(在其他环境下可行),显示错误如下
    Debug Asserton Failed
    Program:\Program files\xxx\xxx.exe
    File:
    f:\dd\vctools\vc7libsce\ship\atlmfc\src\mfc\occcont.cpp
    Line:936
    (Press Retry to debug the application)

    对程序调试,错误定位到
    C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\atlmfc\src\mfc\occcont.cpp
    指示有问题的地方在以下语句中
    COleControlSiteOrWnd *pTemp =new COleControlSiteOrWnd(hwndCtrl,pOccDlgInfo->m_pItemInfo[i].bAutoRadioButton);
    ASSERT(IsWindow(pTemp->m_hWnd));

    我该怎样做才能添加FlexGrid控件并能运行?
    智能设备上有其他表格控件可用吗?
    谢谢!

    • 已编辑 deng_db 2010年3月8日 10:36
    2010年3月8日 5:31

答案

  • 真正功能和FlexGrid 类似的,在Windows Mobile 上面好像没有。 一般来说大家在Windows Mobile 上显示数据,都用ListCtrl 或者自己画。改写数据会另外弹出一个界面。鉴于,Windows Mobile 设备屏幕很小,也没有键盘可以输入。因此,用户体验是第一位的,一般不会让用户即时修改Grid 的某个Cell。

    FlexGrid 不能在Pocket PC 上运行,是因为FlexGrid 是已经针对x86系列CPU 编译好的二进制代码。Pocket PC 常见的CPU 都是ARM4、ARM 7 ARM11 等等,就是不常见的也肯定不是x86系列的CPU。因此无法运行。


    还有一种方案,有人在Codeproject 上发表了一个自己的GridCtrl,是开源的。你可以将其迁移到Windows Mobile 上。
    http://www.codeproject.com/KB/miscctrl/gridctrl.aspx
    • 已标记为答案 Nancy Shao 2010年3月15日 2:44
    2010年3月9日 4:17
    版主

全部回复

  • 这个断言说的是你这个控件的窗口没有成功创建.检查一下这个控件是否在其他环境下可以执行或者其是否支持智能设备.


    0xBAADF00D
    2010年3月8日 6:33
    版主
  • 是FlexGrid控件,在其他环境下(非智能设备)能执行,我不知道智能设备是否支持该控件.
    若不用FlexGrid控件,哪有其他表格控件能在智能设备程序运行吗?

    2010年3月8日 10:34
  • 你确定这个控件支持智能设备的CPU?智能设备很多都不是Intel/AMD的CPU。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年3月8日 18:48
    版主
  • 如果是微软默认的那个flexGrid 应该是不能在智能设备上运行的。
    2010年3月9日 0:14
    版主
  • 我是第一次做智能设备程序的,所以不了解不同的CPU会不支持有些控件.那么不用MS的FlexGfid控件还有别的表格控件能在Pokect PC 2003上运行的吗?

    2010年3月9日 4:07
  • 是MS的,那只能设备上该用什么表格控件啊?
    2010年3月9日 4:08
  • 真正功能和FlexGrid 类似的,在Windows Mobile 上面好像没有。 一般来说大家在Windows Mobile 上显示数据,都用ListCtrl 或者自己画。改写数据会另外弹出一个界面。鉴于,Windows Mobile 设备屏幕很小,也没有键盘可以输入。因此,用户体验是第一位的,一般不会让用户即时修改Grid 的某个Cell。

    FlexGrid 不能在Pocket PC 上运行,是因为FlexGrid 是已经针对x86系列CPU 编译好的二进制代码。Pocket PC 常见的CPU 都是ARM4、ARM 7 ARM11 等等,就是不常见的也肯定不是x86系列的CPU。因此无法运行。


    还有一种方案,有人在Codeproject 上发表了一个自己的GridCtrl,是开源的。你可以将其迁移到Windows Mobile 上。
    http://www.codeproject.com/KB/miscctrl/gridctrl.aspx
    • 已标记为答案 Nancy Shao 2010年3月15日 2:44
    2010年3月9日 4:17
    版主
  • 谢谢版主, 待会我下个GridCtrl,看看可否应用到智能设备程序上

    2010年3月10日 0:59