【问题标题】:"Encountered an improper argument" running a Windows XP MFC Ribbon Application运行 Windows XP MFC 功能区应用程序的“遇到不正确的参数”
【发布时间】:2009-02-05 04:11:58
【问题描述】:

我使用 VS 2008 在 Vista 上开发了一个 Ribbon 应用程序。它在 Vista 上运行良好。我静态链接 MFC,以便我也可以在 XP 上运行它。

但是当我在 XP 上运行它时,它会弹出一个对话框说“所需的资源不可用”。 稍后,如果我在此对话框上按 OK,它会显示另一个说“遇到不正确的论点”。许多这样的(“遇到一个......”)对话框(一个接一个)跟随,直到我从任务管理器中终止它。

我注意到有趣的是,当我将鼠标指针放在功能区栏上时,就会发生这种情况。我什么都不做。然后我打开任务管理器,看到使用的内存每秒增加 8 个字节。最终出现了上面的场景。

?????

【问题讨论】:

  • @Ron,我认为语句“我尝试在 XP 系统上安装 MFC 功能包,但失败了三次。”重要到足以保证向您提出问题,而不是作为对答案的评论。我认为这回答了您的问题,因为在没有安装功能包的情况下,您的软件将如何运行?
  • 我假设您实际上是在谈论 VC2008 功能包。您应该尝试安装该软件包还是可再发行软件包。该功能包是对 VC 的补充,可再发行组件应该发送给您的应用程序的用户。
  • 现在我看到安装驱动器已满。我将安装在不同的驱动器上并获取堆栈跟踪。
  • 您可能会发现,如果您安装在不同的驱动器上(即安装成功),问题就会消失 :-)。
  • 我的代码中存在导致此问题的资源泄漏。我在更新功能区栏控件(ON_UPDATE_COMMAND_UI)时调用了 GetDC(),但没有发布它。

标签: crash ribbon


【解决方案1】:

很可能该功能区是 Vista 中 Win32 通用控件的一部分(因此在 XP 下不可用)。换句话说,虽然你有静态链接的 MFC,但它可能不是 MFC 持有你正在寻找的资源。

制作社区 wiki,因为我真的不知道这是否正确 :-)。

【讨论】:

  • 我安装“MFC 功能包”以获取功能区 UI 功能。我认为这确实意味着 Ribbon 出现在 MFC dll 中。 ..?
  • 很公平,但是如果正如您在@Ash 的评论中所说的那样,它没有安装(三次!),您如何期望您的代码在没有它的情况下运行?你应该先问一个问题:为什么 MFC FP 不能在 XP 上安装?
【解决方案2】:

我的代码中存在导致此问题的资源泄漏。

我在更新功能区栏控件 (ON_UPDATE_COMMAND_UI) 时调用了 GetDC(),但尚未发布它。使用 ReleaseDC(..) 释放它解决了这个问题。

感谢所有回复。

【讨论】:

    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    相关资源
    最近更新 更多