问题标签 [mfc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
54813 浏览

winapi - 如何在 MFC 中创建可调整大小的 CDialog?

我必须创建一个基于对话框的应用程序,而不是旧的 CFormView 设计类型。但是 CDialog 产生固定大小的对话框。如何使用可调整大小的对话框创建基于对话框的应用程序?

0 投票
5 回答
5841 浏览

c++ - 如何在 C++/MFC/GDI 中创建一个非常大的位图

我希望能够在 C++ MFC 应用程序中创建一个大的(比如 20,000 x 20,000)像素位图,使用 CDC 派生类写入位图。我尝试使用 MSDN 文档中描述的内存 DC,但这些似乎仅限于与当前显示驱动程序兼容的大小。

我目前正在使用位图打印驱动程序来完成这项工作,但由于假脱机 GDI 信息,它非常慢并且使用了大量的中间存储。

我正在寻找的解决方案不应该涉及元文件或假脱机,因为我正在绘制的模型需要数百万次 GDI 调用来渲染。

我可以通过多个内存 DC 使用分而治之的方法,但这似乎是一种相当繁琐和不雅的技术。

有什么想法吗?

0 投票
1 回答
503 浏览

c++ - 从工具栏获取 Internet Explorer 中当前页面的地址

我试图在 MFC 中为使用 COM 的 Internet Explorer 创建一个工具栏(钢筋中的工具带)。

是否可以从工具栏中获取当前查看页面的地址(即https://stackoverflow.com/questions/ask在我的情况下:-))?

如果是这样,我应该注意什么?

谢谢!

0 投票
5 回答
11970 浏览

c++ - Win32/MFC 从客户端矩形获取窗口矩形

我知道某处有一个函数可以接受客户端矩形,它会为您将其转换为窗口矩形。我只是找不到/记得它!

有谁知道它是什么?

它会做类似的事情:

0 投票
8 回答
15642 浏览

c++ - Visual Studio 2008 Express MFC 支持

许多人可能都知道,Visual Studio 2008 的 Express 版本不包括对 MFC 和编译大量 Windows 程序所需的一些其他包的支持。

所以,这是我的问题:

我有完整版的 Visual Studio 2005。我一直在用它来编译我的一个朋友正在做的一个项目,这样我就可以为他测试它并继续跟踪错误和事情。最近,他将该项目升级到 VS 2008,而我没有。所以,我下载了 express 版本,希望我可以简单地用它编译,但不走运,它抱怨标题左右丢失。

在我看来,既然我已经拥有了 VS 2005 的完整版本,那么我肯定至少有一些(可能是较旧的)有问题的文件版本,他的项目需要针对这些文件进行编译。

有没有一种方法可以说服 VS 2008 也在 2005 的目录中查找包含文件和库文件以进行编译?

此外,这是一个坏主意吗?我真的不想出去购买完整的VS 2008,因为我自己永远不会使用它。(目前,2005 年对我来说做得很好,而且我还是更喜欢 GCC。)

谢谢

0 投票
3 回答
1767 浏览

c++ - Why does my MFC app hang when I throw an exception?

If you throw an exception from inside an MFC dialog, the app hangs, even if you have a catch block in your code. It refuses to respond to the mouse or keyboard, and the only way to shut it down is to use Task Manager.

Why I'm posting this question

To my shame, there is a popular shrink-wrapped application that hangs every time it encounters an exceptional error in a modal dialog. When we made a massive shift from integer error codes to exceptions, I was responsible for choosing std::exception as the base class for the thrown exceptions. It wasn't until a huge amount of work went into the conversion that our testing uncovered this problem, and by then it was too late to change. Hopefully this question/answer will keep someone from making the same mistake.

0 投票
7 回答
4362 浏览

c++ - Windows C++ 对话框调整器类

我正在寻找一个非常好的对话框调整器类,它可以在调整屏幕大小时根据需要拉伸和收缩各个项目。Stephan Keil 有一个很好的 (DlgResizeHelper),它基本上可以按设定的比例调整所有内容的大小,但我正在寻找更智能的东西。

例如:

  • 图标不应调整大小

  • 单行文本框不应垂直拉伸

  • 按钮应该保持相同的大小

基本上我正在寻找一些东西来查看所有控件,找出一个静态文本字段与它旁边/下方的控件相关并将两者锚定在一起,并以“智能”方式调整大型控件的大小,使其看起来好的。

有这样的框架吗?我一直在做一个,但现成的东西可能会更好。

跟进:我正在查看建议的解决方案。其中许多要求您在对话框上的每个控件中加入一个锚点。我正在寻找一些聪明的东西,它可以弄清楚锚点应该是什么,如果猜测错误,它能够手动锚定。似乎应该是可能的——大多数人会同意编辑字段旁边的静态文本字段应该锚定在一起。猜猜我几乎在这里寻找一个小人工智能:)

0 投票
3 回答
1144 浏览

c++ - CScrollView 和窗口大小

(MFC 问题)在 CScrollView 中确定当前显示的客户区的最佳方法是什么?我只需要可见部分的大小,因此 GetClientRect() 在这里不起作用。

0 投票
5 回答
2142 浏览

mfc - MS VC++ 6 类向导

好的,我正在开发一个在过去 16 年中一直在持续开发的应用程序,从 DOS 中的 C 到各种风格的 C++,现在主要基于 C++,带有 MFC 和 StingRay GUI 以及各种其他 SDK。

虽然我使用 VS 2005 构建发布版本,但我仍然使用 MSVC 6 构建大部分 GUI,因为 ClassWizard 在这种环境中比随后的弱等效工具快得多。请注意,我正在使用 ClassWizard 为我自己的用户定义类型自动生成代码(请参阅自定义 DDX),并且我喜欢一次性添加很多成员变量和方法。根据 Visual Studio 的更高版本一次创建一个对我来说是一个很大的倒退。同时,使用多个 IDE 也很痛苦。

我的问题分为两部分;

  1. 有什么方法可以让 ClassWizard 工作是 VS 2005 还是 VS 2008?

  2. 是否有任何替代 IDE 或替代 IDE 可以为像我这样的旧 C++ hack 提供类似水平的生产力?

0 投票
6 回答
1991 浏览

visual-studio-2008 - 奇怪的 MFC / VC++ 链接器错误 (std::list已经定义)

我收到了一条非常奇怪的错误消息,仅在我将以下行添加到我的项目时才会出现:

值得注意的是,它不一定是 std::list,它可以是 std::vector 或我假设的任何其他 STL 容器。

这是错误消息:

错误 1 ​​错误 LNK2005:“公共:__thiscall std::list

::list >(void)" (??0?$list@VCRect@@V?$allocator@VCRect@@@std@@@std@@QAE@XZ) 已在 SomeLowLevelLibrary.lib 中定义

错误消息中引用的低级库不知道我正在构建的项目,它只有核心的低级功能,不处理高级 MFC GUI。

如果我将代码行更改为:

但我不想为了它而破解它。

此外,无论我是在堆栈还是堆上创建变量,我仍然会得到同样的错误。

有没有人对此有任何想法?我在 Vista Enterprise 上使用 Microsoft Visual Studio 2008 SP1。

编辑:上面的链接器错误是针对 std::list<> 构造函数的,我也收到析构函数、_Nextnode 和 clear 函数的错误。

编辑:在项目的其他文件中,std::vector 不会链接,在其他文件中它可能是 std::list。我无法弄清楚为什么有些容器可以工作,而有些则不能。MFC 链接在两个库中都是静态的。在低级库中,我们有 1 个继承自 std::list 的类。

编辑:低级库没有任何从 CRect 继承的类,但它确实使用了 STL。