|
Just wondering whether you have ever required to call a .Net Interface/DLL from c++ code?
I could load the library, but can’t get the function pointer!
Would you have any suggestions?
typedef int (*cfunc)(void);
cfunc CreateFunction;
HINSTANCE hLib=LoadLibrary(sFullName.c_str());
CreateFunction = (cfunc) GetProcAddress((HMODULE)hLib, "iSquare");
Thanks,
Debasis
|
|
|
|
|
Debasis10 wrote: call a .Net Interface/DLL from c++ code?
You can't from native c++ code. You can use C++/CLI, however, which is designed
to bridge the native/managed gap.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hello to all,
I am having a .net application in which i am creating a thread which reads data from serial port.
I am having one buffer Buffer[1000] which store 1000 bytes data. Simultenously i have to display and store this data into one file. When buffer Size becomes 1000, i have to send message to main application form, to display this 1000 bytes data and also store it into a file.
I am having problem regarding how to send message to main application from a thread.I am facing this problem from last 10 days, but i am not geting proper solution.
Can anyone tell me please? It is urgent.
Thanks and Regards,
Abhijit
|
|
|
|
|
I would use pipes http://msdn.microsoft.com/en-us/library/aa365781(VS.85).aspx[^] but then again i am not up with the play on the latest .NET tools and tricks but "pipes" are tried n true easy solution to the messaging problem especially when u have to send data along with it.
otherwise if u dont need to send a chunk of data then u could simply use
PostMessage()/PostThreadMessage()
|
|
|
|
|
Hello!
You could use Invoke or BeginInvoke/EndInvoke to let
the main thread execute your delegate.
With Invoke, the worker thread waits until the handlers
have completed. There are examples in the msdn.
Alex
|
|
|
|
|
Can we reduce this function further in one simple statment as the compared number from -3 to +3 is same
|
|
|
|
|
I don't think so.
(you could use abs(x) > 3, but I don't think it would be faster)
|
|
|
|
|
Thanks for the reply but it is taking more CPU time than the given one.
|
|
|
|
|
if u are worried about CPU time taken for such a simple operation then i would check the ASM output that is generated from the code, i think u will find that a number of C code options will boil down to the same ASM in the end.
|
|
|
|
|
Hi. I'm using Visual Studio C++/CLI. I have a well developed class that now has a need to have a user interface for it. Normally I will determine if I need a form associated with a class when I create the class, so the class is created as a System::Windows::Forms::Form. But now I have a class that I did not think would need a form associated with it so it was defined as a simple C++ ref class. What is the proper way to add a form to the class? Should I create a new UI Forms based class and cut and paste everything in my existing class into it? Or is there a simple way to instantiate a new form as a method of the existing class?
Thanks,
Buck
|
|
|
|
|
BuckBrown wrote: Normally I will determine if I need a form associated with a class when I create the class, so the class is created as a System::Windows::Forms::Form. But now I have a class that I did not think would need a form associated with it so it was defined as a simple C++ ref class. What is the proper way to add a form to the class? Should I create a new UI Forms based class and cut and paste everything in my existing class into it? Or is there a simple way to instantiate a new form as a method of the existing class?
Buck, what's up dude? Ever heard of Object Oriented Design Principles, Best Practices, Separation of Concerns, Design Patterns, Model-View-Controller?
Any of this ringing any bells with you? You don't tightly couple a "class" with the presentation layer of your design, it's not considered Best Practice and there are Patterns like MVC that represent solutions for this.
led mike
|
|
|
|
|
Hi Mike,
Just so you know, I first learned programming using assembly on a state of the art Intel 8085 and our operating system was CP/M (that's what it was called before Microsoft bought it and renamed it MS-DOS). Over the years I have been forced to learn various programming languages on Data General, VAX, UNIX, and MS-DOS boxes, but all of the OO stuff was invented long after I got out of college. So the fact that I'm an over 50 microelectronics engineer with a EE degree and not a new Computer Science graduate, I can state with confidence that with the exception of Object Oriented Design Principles I've never heard of any of those terms before (nor whatever MVC means). You even mention a "presentation layer". I have never heard anyone use that term before. IO, User Interface, GUI sure, but "presentation layer"? I don't understand what you mean by "you don't tightly couple a class with the presentation layer". Visual Studio's forms designer seems to make things very tightly coupled. Anyways, if you could dumb down your responses for me that would be cool.
Thanks,
Old Buck
And my applications always work and do what they were designed to do.
|
|
|
|
|
|
Easy way would just be to make a new form class and make the class a member of the new form class. ugly? yes. best practise? no. will it do the trick? probably
|
|
|
|
|
How To create an array of form?
|
|
|
|
|
You create form array in the same way as you would create array of any other type.
Giorgi Dalakishvili
#region signature
my articles
#endregion
|
|
|
|
|
Still another question:
I want to create a .NET equivalent to the MFC CDialogBar.
When I move a form which is a child of a panel,
the mouse position is bounded by the panel,
even if I set
Parent = nullptr;
TopLevel = true; on first Move-Event and even if the panel is not
visible any more. Is there a workaround?
Alex
|
|
|
|
|
Hello!
For the mouse, I found a solution:
The allowed mouse position is bounded by the Cursor->Clip property.
But still the window can not be moved completely out of the panel,
it stops at the border.
Alex
|
|
|
|
|
Ok, nearly solved.
When I override the WndProc-Method and process the WM_SYSCOMMAND(SC_MOVE) Message,
I can reset the Parent-property and the window is not bounded any more.
Alex
|
|
|
|
|
Hello!
I want to compare the type of an object to a class.
What is the correct syntax to use? In my case, I
want to know if a control is an instance of MdiClient.
GetType works on the pointer, but not on the class.
typeid(MdiClient) gives me error C3767.
Alex
|
|
|
|
|
if (some_ref_handle->GetType() == MdiClient::typeid)
{
}
|
|
|
|
|
Thank you!
At first I got an error because MdiClient is a private(?) member
of the class (which is not shown in the IntelliSense list).
But with
Windows::Forms::MdiClient::typeid
it works.
Alex
|
|
|
|
|
Cool
LionAM wrote: MdiClient is a private(?) member
of the class
MdiClient IS the class.
LionAM wrote: But with
Windows::Forms::MdiClient::typeid
it works.
Oops - I guess I assumed "using namespace Windows::Forms;"
typeid needs to know the type at compile time. You could also use something like
if (some_ref_handle->GetType() == Type::GetType("Windows::Forms::MdiClient"))
for a runtime check.
Cheers,
Mark
|
|
|
|
|
Hello!
::MdiClient::typeid works, but MdiClient::typeid
gives
error C3223: 'System::Windows::Forms::Form::MdiClient' : you cannot apply 'typeid' to a property
Alex
|
|
|
|
|
MdiClient is in the System::Windows::Forms namespace, not the
System::Windows::Forms::Form namespace (which doesn't exist -
System::Windows::Forms::Form is a class).
Either of these should work:
using namespace System::Windows::Forms;
...
if (objectref->GetType() == MdiClient::typeid)
or
if (objectref->GetType() == System::Windows::Forms::MdiClient::typeid)
Mark
|
|
|
|