-3

I would like to make my own compenents using, and for, VC9 & Visual Studio 2008 Express. Currently my top level Form classes contain too much code for my liking, and I want to grow them.

I can safely get as far as Project->Add...->Component_Class.

Next I name and populate the component with, say, a text box, submit button, and panel to represent tabs for the different channels the comment can be submitted to (all, team, opponent) with a rich text box below which I will update depending on the tab selected.

Only trouble is I am breaking the

#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>

When I come to setting positions for my sub-components.

That and I can't get this new component into my toolbox.

Is it possible with VC++2008 Express?

_EDIT_

So I followed this, http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=151764&SiteID=1 advice and got the component in my toolbox.

Problem now is it is just 'unvisual' as the image lists sitting in their own bar off of the Form design area :(

Will try to extend a more substantial class than

System::ComponentModel::Component

_EDIT_

I've since answered this myself and tidied up the title and tags for future reference.

John
  • 6,433
  • 7
  • 47
  • 82
  • Windows Forms refers to WinForms, which is a .NET thing. So this isn't C++. – Nicol Bolas Jul 27 '11 at 21:56
  • @nicol C++/CLI is a .net thing – David Heffernan Jul 27 '11 at 22:02
  • Nicol - you can write Windows Forms in managed C++, so you are not entirely correct in that statement - not sure who bother though. That said, I think you're right that this is a C# question. – iandotkelly Jul 27 '11 at 22:05
  • Managed C++ and C++/CLI are not C++. They are extensions to the language, but they should not be conflated or confused with the language itself. – Nicol Bolas Jul 27 '11 at 22:07
  • I haven't yet read the C++0x specification so it was hard to tell how far removed MS have made VC.NET. As I am working with many native classes so as to translate to Android in the future I thought it was all just about C++. – John Jul 27 '11 at 22:10
  • No argument. Good move. Just offering more detail. Since 90% of my coding has been C++ recently I formed a habit. I am new to .NET. – John Jul 27 '11 at 22:14
  • I've got the control on my main Form. Perhaps it's because it extended System::ComponentModel::Component it is relegated to the 'offscreen' design area with my imageLists :( – John Jul 27 '11 at 22:42

2 Answers2

0

The following article is about creating custom controls in Visual Studio and C#, I hope it is useful to you. It looks like it might be in an older version of VS/C#, but the Windows Forms stuff is quite old anyway

http://www.akadia.com/services/dotnet_user_controls.html

You might want to consider writing WPF applications as an alternative to Windows Forms - this is a more up to date technology for building desktop applications for Windows, and some of the technology is shared with other Microsoft tools such as Silverlight.

And here is a tutorial for how to build custom controls in WPF if you're interested:

http://www.abhisheksur.com/2011/07/writing-reusable-custom-control-in-wpf.html

Update: So looking at the capabilities of VS2008Express - you can't make WPF custom controls, so clearly if you're limited to that environment then you're going to have to go with Windows Forms. The tutorial is above.

iandotkelly
  • 9,024
  • 8
  • 48
  • 67
  • Yeah, looking WPF vs Forms discussion on way here. WPF is immature and using VS2008Express is even more immature. VS2010 doesn't cater to C++ autocompletes. Hmm, the link isn't specifically for Express, nor C++. What about http://stackoverflow.com/questions/86562/what-is-missing-in-the-visual-studio-2008-express-editions? – John Jul 27 '11 at 22:20
  • Your app, your opinion is the one that counts - you have to live with writing and supporting it. For what it is worth, WPF does not strike me as immature. I don't understand the comment about C++ autocompletes. – iandotkelly Jul 27 '11 at 22:26
  • C++ has not code/autocomplete in VS2010! Hence 2008 edn only for C++. I think i've tried c# wpf vs2010 maze tutorial and maybe my classic XP themes threw it but it looked awful. – John Jul 27 '11 at 22:31
  • I can live without components, just move all non-gui logic off the form perhaps?.. I need C++ more so there really is no solution other than to grin and bear it. – John Jul 27 '11 at 22:49
0

If anyone is interested, I found how to create custom components in VC++ 2008.

You don't use the Forms designer but must do it programmatically. Well, I cheated and got most of the code from a proto-mock-up which I first created with the Form Designer.

The source of this info was the SDK documentation for the UserControl class,

http://msdn.microsoft.com/en-us/library/system.windows.forms.usercontrol%28v=VS.90%29.aspx

By adding the sample code in the above linke to my project I was able to add it as visual component using the Forms Designer by selecting

"Tools > Options > Windows Forms Designer > General : AutoToolboxPopulate"

I've now offloaded all my GUI code to their own classes and generally I add the following

#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;

before namespace myProjNS { and proceeding to declare a class which extends some other Forms component.

I now appreciate the merits of the above answers, but they all require C# which was not available on my limited system at the time I asked the question.

John
  • 6,433
  • 7
  • 47
  • 82