Visual C++ 2008 Express,将离散的 GUI 元素封装到单独的文件中
Posted
技术标签:
【中文标题】Visual C++ 2008 Express,将离散的 GUI 元素封装到单独的文件中【英文标题】:Visual C++ 2008 Express, encapsulation of discrete GUI elements into separate files 【发布时间】:2011-10-14 15:37:40 【问题描述】:我想使用 VC9 和 Visual Studio 2008 Express 制作自己的组件。目前我的***表单类包含太多我喜欢的代码,我想增加它们。
我可以安全地到达 Project->Add...->Component_Class。
接下来,我使用文本框、提交按钮和面板来命名和填充组件,以表示可以将评论提交到的不同渠道(所有、团队、对手)的选项卡,并在其下方使用富文本框我会根据选择的标签进行更新。
唯一的麻烦是我打破了
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
当我开始为我的子组件设置位置时。
我无法将这个新组件放入我的工具箱中。
VC++2008 Express 可以吗?
_编辑_
所以我遵循了http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=151764&SiteID=1 的建议,并在我的工具箱中获得了该组件。
现在的问题是它只是“不可视”,因为图像列表位于表单设计区域之外的自己的栏中:(
将尝试扩展一个比
更充实的类系统::组件模型::组件
_编辑_
我已经自己回答了这个问题,并整理了标题和标签以供将来参考。
【问题讨论】:
Windows Forms 指的是 WinForms,它是一个 .NET 的东西。所以这不是 C++。 @nicol C++/CLI 是一个 .net 的东西 Nicol - 您可以在托管 C++ 中编写 Windows 窗体,因此您在该声明中并不完全正确 - 但不确定谁会打扰。也就是说,我认为你是对的,这是一个 C# 问题。 托管 C++ 和 C++/CLI 不是 C++。它们是语言的扩展,但不应与语言本身混为一谈。 我还没有阅读 C++0x 规范,所以很难说 MS 已经让 VC.NET 走了多远。由于我正在使用许多本机类以便将来转换为 android,我认为这完全是关于 C++。 【参考方案1】:如果有人感兴趣,我发现了如何在 VC++ 2008 中创建自定义组件。
您不使用表单设计器,但必须以编程方式进行。好吧,我作弊并从最初使用表单设计器创建的原型模型中获取了大部分代码。
此信息的来源是 UserControl 类的 SDK 文档,
http://msdn.microsoft.com/en-us/library/system.windows.forms.usercontrol%28v=VS.90%29.aspx
通过将上述链接中的示例代码添加到我的项目中,我可以使用表单设计器通过选择将其添加为可视组件
“工具 > 选项 > Windows 窗体设计器 > 常规: 自动工具箱填充”
我现在已将我所有的 GUI 代码卸载到他们自己的类中,通常我会添加以下内容
#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>
using namespace System;
using namespace System::Windows::Forms;
using namespace System::Drawing;
using namespace System::ComponentModel;
在namespace myProjNS
之前并继续声明一个扩展了其他一些表单组件的类。
我现在很欣赏上述答案的优点,但它们都需要 C#,在我提出问题时,我的有限系统上不可用。
【讨论】:
【参考方案2】:下面的文章是关于在 Visual Studio 和 C# 中创建自定义控件的,希望对你有用。看起来它可能在旧版本的 VS/C# 中,但 Windows 窗体的东西无论如何都相当旧
http://www.akadia.com/services/dotnet_user_controls.html
您可能需要考虑编写 WPF 应用程序作为 Windows 窗体的替代方案 - 这是一种用于为 Windows 构建桌面应用程序的更新技术,并且其中一些技术与 Silverlight 等其他 Microsoft 工具共享。
如果您有兴趣,这里有一个关于如何在 WPF 中构建自定义控件的教程:
http://www.abhisheksur.com/2011/07/writing-reusable-custom-control-in-wpf.html
更新:所以看看 VS2008Express 的功能 - 你不能制作 WPF 自定义控件,所以很明显,如果你受限于那个环境,那么你将不得不使用 Windows形式。教程在上面。
【讨论】:
是的,正在这里寻找 WPF 与 Forms 的讨论。 WPF 不成熟,使用 VS2008Express 更不成熟。 VS2010 不支持 C++ 自动完成。嗯,该链接不是专门针对 Express 的,也不是 C++ 的。 ***.com/questions/86562/…呢? 你的应用程序,你的意见是最重要的——你必须忍受写作和支持它。对于它的价值,WPF 并没有让我觉得不成熟。我不明白关于 C++ 自动完成的评论。 C++ 在 VS2010 中没有代码/自动完成功能!因此 2008 edn 仅适用于 C++。我想我已经尝试过 c# wpf vs2010 迷宫教程,也许我的经典 XP 主题扔了它,但它看起来很糟糕。 我可以没有组件,只是将所有非 gui 逻辑移出表单?.. 我更需要 C++,所以除了笑着忍受之外真的没有其他解决方案。以上是关于Visual C++ 2008 Express,将离散的 GUI 元素封装到单独的文件中的主要内容,如果未能解决你的问题,请参考以下文章
Visual C++ 2008 Express,将离散的 GUI 元素封装到单独的文件中
Visual C++ 2008 Express 中的代码定义窗口是啥?
Visual C++ 2008 Express 下载链接失效? [关闭]
C++ Express 版缺少哪些 Visual Studio 2008 生产力功能?