MFC功能区应用程序不显示功能区 - 当.exe被复制粘贴到其他计算机时

时间:2012-05-11 20:07:49

标签: c++ visual-studio-2008 mfc ribbon

好吧,我面临一个奇怪的问题。我在我的机器上开发了一个示例MFC功能区应用程序 - Windows 7,使用Visual Studio 2008.当我复制将.exe粘贴到我的笔记本电脑上并运行应用程序时,我没有看到功能区菜单(实际上应用程序没有菜单现在。)

我尝试使用进程监视器查找每种情况(在我的工作机器和笔记本电脑上)加载的.dll,但我无法找到可能缺少的内容。任何帮助将不胜感激。

编辑1 -

好的,谢谢你的回复。这个问题取得了一些进展

  1. 我将我的IDE更改为VS 2010.功能区已手动编码,我想出是否可以将其添加为资源,问题可能会解决。 VS 2008没有选择添加功能区作为资源的选项。

  2. 我安装了VS 2010 Service Pack Redistributable X86 / X64,具体取决于机器是32位还是64位。

  3. 我从VS 2010构建了一个新的“ribbontest.exe”应用程序,并将其部署在我将测试我的实际应用程序的其他计算机上。 “ribbontest.exe”的功能区加载没有任何问题。

  4. 当我部署我的应用程序并运行它时,首先旧的菜单栏加载一两秒钟,然后功能区闪烁并消失。

    我指的应用程序的一点历史 - 最初我的应用程序有菜单栏视图。我按照这篇文章http://www.codeguru.com/cpp/cpp/cpp_mfc/tutorials/article.php/c14929/MFC-Feature-Pack-An-Introduction.htm来容纳一个功能区。

    有什么建议吗?

3 个答案:

答案 0 :(得分:2)

设置'路径'中很可能存在冲突。在你的InitInstance()处理程序中,你有一个这样的声明:

// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need
// Change the registry key under which our settings are stored
SetRegistryKey(_T("yourappname"));

如果您尚未更改该名称,请执行此操作。如果您这样做,请在目标计算机上打开regedit.exe并删除HKCU\Software\yourappname下的整个密钥,然后重试。

MFC在该密钥下存储了Ribbons / Menus / ...的用户自定义。但是如果你改变你的应用程序,那些设置就不一定会匹配了,你最终可能会得不到正确显示的东西。

答案 1 :(得分:0)

确保在目标计算机上下载并安装Visual C ++ Redistributable Runtime:http://www.microsoft.com/en-us/download/details.aspx?id=29

或者类似的东西。确保您具有正确的体系结构(x86 / x64),并确保它与您编译的Service Pack版本匹配。

答案 2 :(得分:-1)

乔是对的:您需要可再发行。

Joe是对的:您无法在32位计算机上运行64位程序。

以上所有内容都将由系统指示(缺少DLL,配置不正确或64/32位差异)

Joe是对的:您的应用程序必须针对特定的最低Windows版本和Service Pack进行构建。

除了Joe的帖子,你必须运行发布版本而不是调试版本。 如果满足所有这些要求并且您仍然遇到此问题,请尝试静态链接MFC并查看问题是否仍然存在。