C++ Translation Problems (from Knowledge Base Q10533)

I''ve tried attaching a zip file, but it doesn''t seem to work for me, so the code for the translated classes is at the end of this message. After translating the 3 classes from the ImagePushButton.cs file into C++ classes, I get the following error: error C2512: ''_12390::GridPushButtonImageCellRenderer'' : no appropriate default constructor available which MSDN describes as: No default constructor is available for the specified class, structure, or union. The compiler supplies a default constructor if user-defined constructors are not provided. If you provide a constructor that takes a nonvoid parameter, you must also provide a default constructor. The default constructor can be a constructor with default values for all parameters. The following sample generates C2512: // C2512.cpp class B { public: B (char *); /* add the folling constructor B() { }; */ }; int main() { B b; // C2512 } -------------- I have tried to supply a default constructor with no luck on trying to get rid of this error. Can anyone see the error of my ways? -------------- // Contents of ImagePushButton.h #pragma once using namespace System; using namespace System::Collections; using namespace System::Diagnostics; using namespace System::Drawing; using namespace System::Runtime::Serialization; using namespace System::Windows::Forms; using namespace System::IO; using namespace System::Drawing::Imaging; using namespace Syncfusion::Diagnostics; using namespace Syncfusion::Windows::Forms::Grid; namespace _12390 { public __gc class GridPushButtonImageCellRenderer; public __gc class GridPushButtonImageCellModel : public GridPushButtonCellModel { protected: GridPushButtonImageCellModel(SerializationInfo* pInfo, StreamingContext context) : GridPushButtonCellModel(pInfo, context) { } public: GridPushButtonImageCellModel(GridModel* pGrid) : GridPushButtonCellModel(pGrid) { } public: virtual GridCellRendererBase* CreateRenderer(GridControlBase* pControl) { return new GridPushButtonImageCellRenderer(pControl, this); } }; public __gc class ImageCellButton : public GridCellButton { private: static GridIconPaint* pIconPainter; private: static ImageCellButton() { pIconPainter = new GridIconPaint("_12390", GetExecutingAssembly()); } public: ImageCellButton(GridPushButtonCellRenderer* pControl) : GridCellButton(pControl) { } public: virtual void Draw(Graphics* pG, int iRowIndex, int iColIndex, bool bActive, GridStyleInfo* pStyle) { GridCellButton::Draw(pG, iRowIndex, iColIndex, bActive, pStyle); // draw the button bool bHovering = IsHovering(iRowIndex, iColIndex); bool bMouseDown = IsMouseDown(iRowIndex, iColIndex); bool bDisabled = !pStyle->Clickable; ButtonState buttonState = ButtonState::Normal; if (bDisabled) { buttonState |= ButtonState::Inactive | ButtonState::Flat; } else if (!bHovering && !bMouseDown) { buttonState |= ButtonState::Flat; } Point PtOffset = Point::Empty; if (bMouseDown) { PtOffset.X = 1; PtOffset.Y = 1; buttonState |= ButtonState::Pushed; } DrawButton(pG, Bounds, buttonState, pStyle); String bitmapName = S"Browse.bmp"; // make sure this is included in project and marked as "Embedded Resource" // Instead of using GridIconPaint you could simple use Image.Draw here // with an existing bitmap. GridIconPaint is convenient because it lets // us easily draw over existing background and replace the black color // in the bitmap with a different color. pIconPainter->PaintIcon(pG, Bounds, PtOffset, bitmapName, Color::Blue); } }; public __gc class GridPushButtonImageCellRenderer : public GridPushButtonCellRenderer { private: ImageCellButton* pPushButton; public: GridPushButtonImageCellRenderer(GridControlBase* pGrid, GridPushButtonImageCellModel* pCellModel) : GridPushButtonCellRenderer(pGrid, pCellModel) { GridPushButtonCellRenderer::RemoveButton(GridPushButtonCellRenderer::GetButton(0)); AddButton(pPushButton = new ImageCellButton(this)); } }; } ------------------------------ // Contents of ImagePushButton.cpp #include "ImagePushButton.h"

2 Replies

DW Dean Wittmann December 28, 2004 04:59 AM UTC

I forgot to mention that the error line is in the function: --------------- public: virtual GridCellRendererBase* CreateRenderer(GridControlBase* pControl) { return new GridPushButtonImageCellRenderer(pControl, this); } --------------- The "return new GridPushButtonImageCellRenderer(pControl, this);" line to be exact. Thanks to anyone that can help me!!!


DW Dean Wittmann December 28, 2004 08:02 PM UTC

Never Mind. I got it to compile correctly. Now, I''m just having problems loading the bitmap. I''m sure I''ll figure this one out too.

Loader.
Up arrow icon