问题标签 [classwizard]
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.
mfc - MS VC++ 6 类向导
好的,我正在开发一个在过去 16 年中一直在持续开发的应用程序,从 DOS 中的 C 到各种风格的 C++,现在主要基于 C++,带有 MFC 和 StingRay GUI 以及各种其他 SDK。
虽然我使用 VS 2005 构建发布版本,但我仍然使用 MSVC 6 构建大部分 GUI,因为 ClassWizard 在这种环境中比随后的弱等效工具快得多。请注意,我正在使用 ClassWizard 为我自己的用户定义类型自动生成代码(请参阅自定义 DDX),并且我喜欢一次性添加很多成员变量和方法。根据 Visual Studio 的更高版本一次创建一个对我来说是一个很大的倒退。同时,使用多个 IDE 也很痛苦。
我的问题分为两部分;
有什么方法可以让 ClassWizard 工作是 VS 2005 还是 VS 2008?
是否有任何替代 IDE 或替代 IDE 可以为像我这样的旧 C++ hack 提供类似水平的生产力?
c++ - 如何制作从基类派生的 ATL COM 类?
“ATL 简单对象”向导不提供指定新类派生自现有 coclass 及其接口的方法。在 Visual Studio 2008 中,如何从现有的 ATL COM 类派生一个新的 ATL COM 类(即Base
implements IBase
,我想创建一个从该 implementsDerived
派生的新类,其中派生自。)Base
IDerived
IDerived
IBase
更新:听起来很简单,但是向导生成的 ATL 类最多有六个基类、一个 COM 映射和一个连接点映射。哪些基类和映射应该在派生类中重复?如果在派生类中重复映射,它们应该包含基类映射的内容还是仅包含附加项?基类的顺序重要吗?FinalConstruct()
和怎么样FinalRelease()
?是否应该在派生DECLARE_PROTECT_FINAL_CONSTRUCT
类DECLARE_REGISTRY_RESOURCEID
中重复?
这是一个除所有样板外为空的示例基类。现在派生类应该是什么样子?
mfc - 如何删除 CPropertySheet Wizard MFC 应用程序中的默认按钮?
嘿伙计们..我正在设计一个在 MFC 应用程序中使用 CPropertySheet 和 CpropertyPage 的设置向导...我已经完成了设计,但问题是..在正常的 CProperty Sheet 中有四个默认按钮“BACK NEXT FINISH HELP”.. .但我只想要 NEXT 和 FINISH 按钮...我使用以下代码来执行此操作,但它给了我一个运行时错误.stating ..“堆栈溢出”我不确定在哪里包含此代码(我的意思是哪个类)..或者如何利用这个功能..任何人都可以帮助我..
BOOL CExtractorFinalUIDlg::OnSetActive() { CSelfExtractor setButtons = (CSelfExtractor )GetParent(); setButtons->SetWizardButtons(PSWIZB_NEXT | PSWIZB_FINISH | PSWIZB_CANCEL);
返回 CExtractorFinalUIDlg::OnSetActive();
}
visual-studio - 未能返回新的代码元素,可能的语法错误
我在一个组框下有 2 个单选按钮,我将第一个组设为 true。但是当我添加单选按钮变量时,它显示消息“无法返回新代码元素可能是语法错误”,原因是什么?
c++ - 在 VS2010 中自定义 ClassWizard
随着 VS2010 SP1 的出现,我再次考虑将 VS2008 转移到更新的版本。主要原因是作为一个长期使用 VC6 的用户,我发现 ClassWizard 是一个很棒的生产力工具,并欢迎它期待已久的回归。但是,虽然 ClassWizard 工作正常,但我找不到任何与创建自定义 DDX 例程所需的 .CLW 文件等效的文件。因此,例如,在 VC6 中经常处理输入长度时,我的 CLW 文件中会包含以下几行
这将允许从 ClassWizard 添加长度变量。知道 VS2010 是否仍然支持这一点,还是我们距离赶上 VC6 还差一年?
c++ - 我可以在VS2010中将一个类导入ClassWizard吗
VS2010 中是否有办法将 .h 和 .cpp 文件中的类导入到 ClassWizard 中,这样我就可以使用 ClassWizard 来操作它(例如添加变量等...) 我带入项目的很多文件当我从 VS2008 移过来时,ClassWizard 似乎无法使用。回到 VS6,我可以通过手动编辑 CLW 文件来做到这一点,但这不再可用。查看相关问题
我猜存储此信息的文件是 MyProjectName.sdf,它被资源管理器列为SQL Server Compact Edition数据库文件,但我不确定是否有任何工具可以让我编辑它。
visual-studio - Visual Studio 类向导错误
在 MSVC 2013 中,我的班级出现 ClassWizard 启动错误。
然后它会打开,但无法识别对话框控件和消息处理程序。
该对话框使用所有标准 MFC 控件。
resource.h 中的所有资源 id 值都是唯一的。
我试图在适当的地方加上 , 等//{{AFX_DATA
标记。{{AFX_MSG
没有效果。
我试图为相同的对话框 id 生成一个新类。ClassWizard 在开始新类时给出相同的消息。
我的项目或资源文件中似乎有一些它不喜欢的东西。
有任何想法吗?有没有办法诊断这个东西?谢谢你。
c++ - VS2013 中的类向导不会为 OCX 控件创建属性方法
我有一个使用 OCX 控件的 VC++6.0 构建的遗留应用程序。我已升级应用程序以使用 VS2013 构建。最初我让它构建并成功运行,但是当我尝试使用类向导重新生成 ocx.h 和 ocx.cpp 文件时
- 在解决方案资源管理器中右键单击项目
- 从 ActiveX 控件中选择 Add:Class:MFCClass
- [添加] 按钮
- 从注册控件列表中选择 OCX
- 选择要复制的接口
- [完成]按钮
生成的 h 和 cpp 输出文件缺少所有 Attribute 方法
我还尝试直接为 Class Wizard 提供 OCX 文件,而不是使用注册表,但结果相同。我求助于手动编辑 ocx.h 和 ocx.cpp 文件来添加缺少的属性方法,但不明白为什么类向导不生成它们。我想回到 VC++6.0 版本,看看它是否能正确生成文件,但我不清楚如何使用 6.0 来生成 ocx.h 和 ocx.cpp 文件,因为相同的菜单选项不可用。
添加 3-5-2018 以回应 Hans 评论
这是原始 OCX 项目中缺少的属性之一
=====文件:SigPlusCtl.h=========
=====文件:SigPlusCtl.cpp=========
=====文件:SigPlusImage.cpp====
这是我必须添加到容器项目中生成的 .h 和 .cpp 文件中以使用此缺失属性的内容。在尝试使用 VS2013 重新生成它们之前,我从容器应用程序中的原始 OCX .h 和 .cpp 文件中复制了此代码。由于我无法使用 VC++6.0 重新生成这些文件(请参阅下面的第一条评论),我不知道这个复制的代码是否最初是由 VC++6.0 向导创建的,或者原始程序员也编辑了这些头文件。
========文件:sigplus=================
========文件:sigplus.cpp=============
我不知道类向导是否重要,但方法位置有点不合常规,因为 OCX 控件方法的实现分散在多个 .cpp 文件中,而不是全部位于 SigPlusCtl.cpp 文件中
2018 年 3 月 20 日添加
根据 Hans 在 3-20 上的评论,我尝试使用 Visual Studio 2013 打开 ocx 文件以检查 TYPELIB。但是当我展开 TYPELIB 文件夹时,它只显示了一个 HEX 转储。
查看使用OLE/COM 对象查看器的 OCX TypeLib 界面,我看到“属性”下列出了缺少的属性,但我没有看到 Get 和 Set 方法的明确声明。例如,有一个属性ImageFileFormat但没有GetImageFileFormat和SetImageFileFormat。在 OCX 控件的源代码中有这些 Get/Set 方法的明确定义。
我是否应该期望在 OLE 查看器中看到明确列出方法下的 Get 和 Set方法:?
添加 3-20-18 17:00 PDT
我在评论中查找了@HansPassart 提到的#import 。此 Microsoft 特定指令似乎是使用类向导的替代方法。我从项目中删除了类向导生成的文件 sigplus.h 和 sigplus.cpp 并添加了
到主头文件。编译后,#import指令会生成 sigplus.TLH 和 sigplus.TLI(头文件和实现)文件,然后包含 sigplus.TLH,然后显式包含 TLI 文件。编译时,#import 会生成这两个文件,然后包含生成的“Release/sigplus.tlh”。这些生成的文件确实包含缺少的 Get/Set 方法,但它们无法编译。TLH 文件为 OCX 类 _DSigPlus 使用不同的名称,并将其放在命名空间中。但即使在考虑了这些差异之后,TLH 文件中的类声明使用 IDispatch 作为类向导使用 CWnd 的父类,并且在编译时有以下未解析的纯虚方法来自 IUnknown,它是 IDispatch 的父类。
mfc - 我无法在 VS 2019 的 MFC 项目中再显示 Classwizard
我的项目几年前就开始了。现在使用 VS 2019。
虽然我可以右键单击并添加事件处理程序(因为它使用新的 VS 向导),我可以右键单击类并添加通用变量(因为它使用新的 VS 向导)我不能再显示类向导:
我已尝试清理项目并尝试重命名我的文件夹。
它拒绝显示并显示该消息:
值不在预期范围内。
显示的另一条错误消息是:
参数不正确。(来自 HRESULT 的异常:0x80070075 (E_INVALIDARG))
这意味着我很难将新变量附加到对话框资源的新控件上。
我已经研究过这个问题,但找不到适用于我的 2019 MFC 项目的解决方案。
更新
我尝试使用Visual Studio Installer and Repair并没有解决问题。
visual-studio-2017 - MFC:Visual Studio 资源编辑器类向导在成员变量下没有所有控件 ID
我遇到过几次,不记得上次我做了什么来修复它(可能从头开始)。这是我所做的:
我复制了一个现有CMFCPropertySheet
对话框并粘贴为新对话框,然后将对话框 ID 编辑为 IDD_MINE,删除所有控件作为起始位置。接下来,我为此对话框添加了各种控件。
按照我想要的方式设置对话框后,我转到“添加类”并为对话框添加了一个类(选择基类CMFCPropertySheet
)。完成后,它是不正确的(VS2017 从来没有为我做正确的属性表)。参考我正在工作的另一个属性表,我将缺少的 IDD_MINE 添加到构造函数和 AFX_DESIGN_TIME { enum IDD=IDD_MINE }。
设置好课程后,我就可以开始添加变量了。但是我注意到一些作为复选框的控件应该是一个单选按钮,所以我删除了它们,创建了单选按钮(按赞),然后从控件 ID 的下拉列表中选择现有的 IDC_ 名称(旧的复选框名称)。接下来,我尝试将第一个单选按钮添加为值变量,但失败并出现以下错误:
你调用的对象是空的。
所以我转到对话框的类向导并查看“成员变量”选项卡。它列出了除单选按钮(和 -1 的 IDC_STATIC 项)之外的所有控件 ID。我尝试通过更改 IDC_ 名称来重命名单选按钮,但这并没有改变任何东西(退出程序等,仍然相同)。
那么有人知道我如何让可视化 stdio 资源编辑器/类向导与真正存在的控件同步,以便我可以使用向导添加它们吗?
蒂亚!!
编辑:
即使“成员变量”选项卡中存在的那些变量也不能与向导一起使用。未将相同对象引用设置为对象消息的实例。
所以绝望,我手动添加了该功能:
现在一切正常!!
巫师会自己处理这一切。