|
thanks navneeth for ypur reply
I tried using /clr:safe option however i got the following error
Error 1 error C4980: '__gc' : use of this keyword requires /clr:oldSyntax command line option d:\excercise\dot net\cppclasslibrary\cppclasslibrary\CPPCLassLibrary.h 8
so as suggested I used the /clr:oldSyntax
and option _gc I am using as i want to consume this class libray in c#
|
|
|
|
|
Here is your class using new syntax.
#pragma once
using namespace System;
ref class DemoCPP
{
public:
DemoCPP();
DemoCPP(double L, double H);
~DemoCPP();
double getLength();
void setLength(double L);
double getHeight();
void setHeight(double H);
void setDimensions(double L, double H);
double Perimeter();
double Area();
private:
double Length;
double Height;
}; Now compile using /clr or /clr:safe .
|
|
|
|
|
I got the Answer
here it is
1. Project Properties -> General Tab
2. for Common Language Runtime Support select Old Syntax (/clr:oldSyntax) from drop down
now you do not need to play with command line .....
you can easily build your project from visual studio IDE itself
|
|
|
|
|
Here's some code :
private: System::Void TS11_MCli(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
Tsn11 = Tsn11 + 1 ;
if (Tsn11 = 0) { this->TS11->Image = Image::FromFile("C:/GamePics/NOTILE.png");}
else {
if (Tsn11 = 1){ this->TS11->Image = Image::FromFile("C:/GamePics/GREEN.png");}
else {
if (Tsn11 = 2){ this->TS11->Image = Image::FromFile("C:/GamePics/GRTRE.png");}
else {
if (Tsn11 = 3){ this->TS11->Image = Image::FromFile("C:/GamePics/ROAD.png");}
else {
if (Tsn11 = 4){ this->TS11->Image = Image::FromFile("C:/GamePics/WALL.png");}
};
};
};
};
};
};
};
|
|
|
|
|
Your questions is not clear. Please explain it clearly.
Also the code posted is less readable. Please remove unnecessary spaces and format it nicely. I think a switch case makes more sense here than nested if.
|
|
|
|
|
The question is ultra simple.
How do I get a mouseclick event work twice?!?
As for the code, it works.
The bug is either the variable won't increment more than once, either the procedure is usable only once.
I'm gonna try something.
|
|
|
|
|
Fenix2 wrote: The question is ultra simple.
Maybe to you!
Fenix2 wrote: As for the code, it works.
Obviously it doesn't, or you would not be asking this question.
Fenix2 wrote: I'm gonna try something.
I would suggest you start with your if (Tsn11 = x) statements.
|
|
|
|
|
Richard MacCutchan wrote: I would suggest you start with your if (Tsn11 = x) statements.
Funny. I haven't noticed if (Tsn11 = x) .
|
|
|
|
|
N a v a n e e t h wrote: Funny. I haven't noticed ...
Took me a few readings; I was looking at the wrong things!
|
|
|
|
|
Hi,
in C/C++/Java/C# the equality operator is ==
Tsn11 = 1 is an expression which both sets Tsn11 to 1 and evaluates to 1, so your if statements will not act as you expect.
FWIW: in VB/VB.NET the equality operator is =
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
Local announcement (Antwerp region): Lange Wapper? Neen!
|
|
|
|
|
So where are you suggesting to put ==?
at the IF statement, or at the increment?
|
|
|
|
|
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
Local announcement (Antwerp region): Lange Wapper? Neen!
|
|
|
|
|
It doesn't work.
If I guess,
I'd say myself that the error is in the starting of the form.h
What if the variables are always reset to 0?
What if the form, would be... in a repeatative process?
So where should I put the variable Tsn11 ?
|
|
|
|
|
Fenix2 wrote: It doesn't work.
What doesn't work?
You have statements of the form if (Tsn11 = 0) , which, as Luc pointed out are incorrect. The equality operator in C++ is == . Correct all your if statements and see what happens.
|
|
|
|
|
Yeah Thanks to all of you.
It works now.
|
|
|
|
|
Whats a natural successor to the COM object in the managed C++/CLI world?
I am migrating an app which has COM objects for no better reason that than is the only way I could get a form into a DLL to share between two exe's.
What should I be using in C++/CLI?
Ger
|
|
|
|
|
Ger Hayden wrote: What should I be using in C++/CLI?
It should be managed assemblies. You can pack windows forms in to assemblies(DLLs) which can be used with multiple applications. Create a Class Library project and add reference to System.Windows.Forms assembly.
|
|
|
|
|
I am migrating to Managed C++/CLI and .NET.
Previously I have used mysql++ with some difficutly.
Should I stick with it or move to ODBC or Connector/.NET?
Ger
|
|
|
|
|
In .NET, MySql connector is the best. It follows ADO.NET standards and provide a neat interface. Download from here[^].
|
|
|
|
|
Thanks. A few minutes to down load. Working example in less than half an hour....
Ger
|
|
|
|
|
How to divide a class into multi-files(like c# partial)?
I want to divide class MainForm into multi-files?
Could somebody tell me how do I achieve this goal?
namespace MyTools {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace System::IO;
using namespace System::Globalization;
vector<MyData> m_MyData;
public ref class MainForm : public System::Windows::Forms::Form
{
|
|
|
|
|
akira32 wrote: How to divide a class into multi-files(like c# partial)?
C++ or C++/CLI already supports this. One header file and several source files is possible. You can have a MainFormUI.cpp which includes MainForm.h and have methods like InitializeComponent . Another source file say MainForm.cpp which has all other method implementations.
Unfortunately, VS designer won't support this kind of separation and it will always write the auto-generated code to MainForm.h.
|
|
|
|
|
A C# Partial Class is not equivalent to the C++ & C++/CLI header/source model. The following cannot not be done with C++ or C++/CLI in different (or in the same) files:
public partial class Employee
{
public void DoWork()
{
}
}
public partial class Employee
{
public void GoToLunch()
{
}
}
"We make a living by what we get, we make a life by what we give." --Winston Churchill
|
|
|
|
|
George L. Jackson wrote: A C# Partial Class is not equivalent to the C++ & C++/CLI header/source model.
I never said they are equal.
George L. Jackson wrote: The following cannot not be done with C++ or C++/CLI in different (or in the same) files:
Correct because it needs all the functions to be declared before using.
The question here is How to divide a class into multi-files(like c# partial)? and I believe C++'s header and multiple source files model is the answer. Please correct me if you feel it is wrong.
|
|
|
|
|
It depends on the point of view, just having multiple physical files or having both multiple physical files and the method of class construction. Yes, you can use multiple files (header/source) in C++ as you do in C#. However, the C# partial class is constructed more like a C++ class-namespace hybrid where you can define methods and data members in multiple source files that somehow come together in the scope of one class.
"We make a living by what we get, we make a life by what we give." --Winston Churchill
|
|
|
|