|
I'm just starting to use VS 2003. I have not found a tutorial on writing user controls, .NET style (I have written some in VB6). Any recomendation on good introductory material?
|
|
|
|
|
Not many books on MC++ (most (as you know) are C#)
I read "Managed C++ and .NET Development" by Stephen
R. G. Fraser. Was helpful (though basic).
WedgeSoft
|
|
|
|
|
I have an unmanaged C++ dll with singeltons implemented as templates
now if i call that dll with MC++ the application hangs
when i call getInstance() of the singleton.
everything else works i can access classes int the unmanged dll.
but when it comes to templates its just hangs.
is there a work around?
|
|
|
|
|
I've got the following problem: I have a DLL written in C++, that exports a function. That function basically puts a very simple CDialog object on the screen (either modal or unmodal).
I have a very simple forms-based C# program that uses this DLL to call the exported function. Everything works OK.
Now, I add a custom control in the CDIalog-derived class, in C++, using an OCX that was developed by another company. When having this OCX, the C# code calls the exported function, but the dialog is not shown.
If needed, I can provide the code.
Any ideas why I have this problem?
|
|
|
|
|
Hi everyone
First it all,I've created a Windows Control Libray (.NET) Control using C++.
second : There is a great library call SDL (simple Direct Layer)
Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. It is used by MPEG playback software, emulators, and many popular games, including the award winning Linux port of "Civilization: Call To Power."
SDL oftently is used for games
SDL supply C methods in order to able to create Windows a interact with them. when SDL starts always create a new Window where anything like show a game o graphics could happen.
SDL needs Initializing methods such as :
/* Initialize SDL */
SDL_Init(SDL_INIT_VIDEO)
/* Set the video mode */
SDL_SetVideoMode(SCREEN_X, SCREEN_Y, 0, SDL_SWSURFACE);
So when SD_SetVideoMode executes a new Wiwdow is created, but I don't want a new
emerging Wiwdow behing I want that the new SDL window created appears completely embedded inside my .NET control.
I Though the solution will would be, change the parent for the SDL Window to
Control, i couldn't do that.
SDL provides methods for getting the HANDLE for the new Window created :
HWND GetWindowHandle()
{
#ifdef WIN32
SDL_SysWMinfo wmi;
SDL_VERSION(&wmi.version);
if(SDL_GetWMInfo(&wmi) == 0)
{
return NULL;
}
else
{
return wmi.window;
}
#else
return NULL;
#endif
}
At this moment i have a component used in a Forms Application that used myControl, but when I exetute this the Windows Forms appears, my component appears too, but the SDL window appear behind.
Here is the code for the .H file
#pragma once
#include "SDL.h"
#include "SDL_syswm.h"
#include "SDL_events.h"
#include <stdio.h>
#include <limits.h>#include <stdlib.h>
//#include <afxwin.h>
#include <windows.h>
#define SCREEN_X 300
#define SCREEN_Y 200
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
namespace cubecontrol
{
///
/// Summary for cubecontrolControl
///
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
public __gc class cubecontrolControl : public System::Windows::Forms::UserControl
{
public:
cubecontrolControl(void)
{
InitializeComponent();
}
protected:
void Dispose(Boolean disposing)
{
if (disposing && components)
{
components->Dispose();
}
__super::Dispose(disposing);
}
private:
///
/// Required designer variable.
///
System::ComponentModel::Container* components;
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
void InitializeComponent(void)
{
//
// cubecontrolControl
//
this->Name = S"cubecontrolControl";
this->Size = System::Drawing::Size(440, 288);
int done;
SDL_Event event;
/* Initialize SDL */
if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) {
//fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
//cout(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
//exit(1);
}
//atexit(SDL_Quit);
/* Set the video mode */
screen = SDL_SetVideoMode(SCREEN_X, SCREEN_Y, 0, SDL_SWSURFACE);
if ( screen == NULL ) {
//fprintf(stderr, "Couldn't set video mode: %s\n",SDL_GetError());
//exit(1);
}
//CWnd window;
//HWND h;
System::Windows::Forms::Control* c ;
System::Windows::Forms::Form* f;
/*window= */ /*CWnd::*///FromHandle(GetWindowHandle())->Parent=this;
c = FromHandle(GetWindowHandle());
}
HWND GetWindowHandle()
{
#ifdef WIN32
SDL_SysWMinfo wmi;
SDL_VERSION(&wmi.version);
if(SDL_GetWMInfo(&wmi) == 0)
{
return NULL;
}
else
{
return wmi.window;
}
#else
return NULL;
#endif
}
static SDL_Surface *screen;
};
}
Thanks in advance for any help someones could give me
|
|
|
|
|
Hi all.
1.
I have a native struct with a pointer member.
typedef struct someStruct SomeStruct;<br />
struct someStruct{<br />
...<br />
SomeStruct *tp_nextp;<br />
};
I'm hosting that struct in a managed class as a field.
Do I need to use the delete keyword on the pointer when the managed object is disposed?
2.
If I put a pointer to a member of that struct, does it need to be deleted?
Thanks,
Yaakov
|
|
|
|
|
What I had seen when I was using MC++ was that if I had a COM object that was used inside of a managed object, the memory and the COM object would be cleaned up but only after the application exited, not when the managed object went away. We had to call a function to delete the COM object when we wanted to when the managed object was disposed. Not sure if it would be the same for you, but you could always turn that unmanaged struct into a class and put some code into the destructor to see when it gets called.
Steve Maier, MCSD MCAD
|
|
|
|
|
I am trying to create a flash movie from within an MFC (MDI) application. The movie must receive information from the program, but not necessarily send anything.
I am aware that I might need to launch IE to run the flash file, so help with that is also appreciated.
Here's what I am looking for:
1. What libraries do I need, and where to get them?
2. Perhaps a code snippet or documentation reference.
3. Code to launch IE (unless there's a way to display a flash movie in a regular MFC view).
Thanks
PS: Sorry if this is the wrong forum.. still learning the ropes.
When the going gets tough... write a computer program to do it for you
|
|
|
|
|
FayezElFar wrote:
PS: Sorry if this is the wrong forum.. still learning the ropes.
yep, it is. This is the managed C++ forum, for questions about C++ that's been made next to useless by the .NET framework. You need to ask in the C++ forum.
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
|
Well, yeah, I do, but I come to this forum regularly to point people who obviously have no idea what MC++ is in the right direction. This forum seems (rightly) to be a ghost town, so I reckon a lot of people who would get answers quickly, don't because they mistakenly post here.
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
Hi guys,
I've implementing a simple class that creates a mutex and release it in the destructor (finalize), but everytime the application is closing a ObjectDisposedException is thrown. Source code here:
public __gc class SingleInstance
{
public:
SingleInstance(String *mutexName) {
m_mutex = new Mutex(false, mutexName);
}
virtual ~SingleInstance(void) {
if (m_mutex)
m_mutex->ReleaseMutex(); <--- !exception here!
}
public:
bool IsAnotherInstanceRunning() { return !m_mutex->WaitOne(10,true); }
private:
Mutex *m_mutex;
};
Can anyone of you tellme why this is happening? m_mutex is not supposed to be already disposed! Should I avoid dispose of m_mutex object? How?
Regards and thanx in advance,
Francesco
|
|
|
|
|
The problem I am having deals with wrapping an unmanaged C++ class which uses iostream and sends output to cout and then using the managed class in C#. When I make a method call on this class, I get the following error:
*** Exception! ***
Method: std.basic_ostream<char,std::char_traits<char> >* std.operator<<<struct std::char_traits<char=""> >(std.basic_ostream<char,std::char_traits<char> >*, SByte*)
Message: Object reference not set to an instance of an object.
When I replace the cout call with a call to printf, I do not get an error.
Here is the corresponding code. Thanks for the help or direction where I can get help.
USimple.h
#pragma once
__nogc
class USimple
{
public:
void PrintIt( );
};
USimple.cpp
#include "stdafx.h"
#include <iostream>
//#include <stdio.h>
#include "MSimple.h"
#include "USimple.h"
void USimple::PrintIt()
{
std::cout << "Hello, World" << std::endl;
// printf( "Hello, World\n" );
}
MSimple.h
#pragma once
#include "USimple.h"
using namespace System;
public __gc class MSimple
{
private:
USimple __nogc* m_pUSimp;
public:
MSimple( );
~MSimple();
void PrintIt( );
};
MSimple.h
#include "stdafx.h"
#include "USimple.h"
#include "MSimple.h"
MSimple::MSimple( )
{
m_pUSimp = new USimple( );
}
MSimple::~MSimple()
{
delete m_pUSimp;
}
void MSimple::PrintIt( )
{
m_pUSimp->PrintIt( );
}
Class1.cs
using System;
namespace CsSimple
{
///
/// Summary description for Class1.
///
class Class1
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main(string[] args)
{
try
{
MSimple simple = new MSimple( );
simple.PrintIt( );
}
catch( Exception e )
{
Console.WriteLine( "\n*** Exception! ***" );
Console.WriteLine( "Method: {0}", e.TargetSite );
Console.WriteLine( "Message: {0}", e.Message );
}
Console.WriteLine( "Press enter to exit" );
Console.Read(); // Wait for enter pressed to end programme
}
}
}
Thanks again,
John Stedman
|
|
|
|
|
hi all there, i want a code that help me to insert any file type in a rtf file, i need to insert by code not drag drop by mouse so plzzzzzzzzzzzzz help me .......
Thanks alot
Metal Man
|
|
|
|
|
Try asking in the C++ forum.
Isn't rtf rich text format ? How can you insert 'any file type' into a text file ?
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
hi,
from reading the subject title... its easy... but what i really want to do is this:
say for example...
int a = 1;
int b = 2;
int number = a + b;
int number is therefore 3
HOWEVER... what i want it to do is...
to make int number 12 instead of adding it and making 3. i want the two ints together so it forms an int number of 12.
does anyone know how to do this in c++ please? something to do with strings?
thank u very much.
|
|
|
|
|
Seeing as you're asking in the MC++ forum, just call the ToString() method on the numbers a and b, and you'll get a string which you can convert back into a number.
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
Another, old school, method is using good ol' sprintf / atoi combo
int nNum1 = 1;
int nNum2 = 2;
char caTempBuf[10];
sprintf(caTempBuf, "%d%d", nNum1, nNum2); //concatination here
int nConcatinated_Number = atoi(caTempBuf);
that should work.
When the going gets tough... write a computer program to do the thing for you
|
|
|
|
|
Or, if you wanted something really old school (and kind of limited) you could do something like the following:
<br />
int a=1, b=2;<br />
char[3] c;<br />
c[0] = a + '0';
c[1] = b + '0';
c[2] = '\0';
cout << c << endl;<br />
but, like I said, this is kind of limited if you're doing anything with bigger or negative numbers.
Democracy for the USA!
|
|
|
|
|
int a = 1;<br />
int b = 2;<br />
int number;<br />
std::stringstream ss;<br />
ss << a << b;<br />
ss >> number;
|
|
|
|
|
Hi all,
I am doing my first setup project for the addin I wrote and can't solve following problem.
I want to deploy an addin for Visual studio. So I need to look in registry for the HKLM\SOFTWARE\Microsoft\VisualStudio\7.X\InstallDir (where 7.X is 7.0 or 7.1) and take it into MyPATH0 and MyPATH1 variables. For the installed version(s) I need to make TARGETDIR to MyPATH0\..\..\\Vc7\VCWizards.
I have no idea how to solve this. Setup wizard seems to have very simple logic, so how can I program in the wizard
"
1.TAKE REGISTRY KEY XX\7.0 into VAR
2. If success Make VAR+AAA to the TARGET DIR
3.Install
4.TAKE REGISTRY KEY XX\7.1 into VAR+AAA
5. If success Make VAR to the TARGET DIR
"
Thank you very much for your help,
Boni
|
|
|
|
|
Im having a little trouble storing the outputs in an array. while the compiler is running i can get the correct output, but cant set up the array for using the results later on. any help would be greatfully appreciated.
What I want in the array is time_of_arrival results from the following function;
CComplexVector process_the_ray(CRay3d a_ray,int m)<br />
{ <br />
CComplexVector result ; <br />
double the_distance ; <br />
int i ; <br />
double length;<br />
<br />
<br />
result = inc_field( (a_ray.listnode(0)).listpoint(),(a_ray.listnode(1)).listpoint(),m ) ; <br />
the_distance = (a_ray.listnode(1).listpoint() - a_ray.listnode(0).listpoint()).abs() ; <br />
<br />
<br />
for( i = 1 ; i < a_ray.non() - 1 ; i++) { <br />
if( a_ray.listnode(i).listtype() == 1) <br />
result = calculate_reflection(result, a_ray.listnode(i-1) , a_ray.listnode(i), a_ray.listnode(i+1) , the_distance) ; <br />
<br />
if( a_ray.listnode(i).listtype() == 2) <br />
result = calculate_transmission(result, a_ray.listnode(i-1) , a_ray.listnode(i), a_ray.listnode(i+1) , the_distance) ; <br />
<br />
<br />
the_distance += (a_ray.listnode(i+1).listpoint() - a_ray.listnode(i).listpoint()).abs() ; <br />
<br />
} <br />
<br />
<br />
length=the_distance;<br />
cout<< "length is:" <<length<<endl;<br />
<br />
time_of_arrival=(length/c);<br />
<br />
cout<<"time_of_arrival:"<<time_of_arrival<<endl;<br />
<br />
return result; <br />
<br />
}
|
|
|
|
|
How do I overload that operator?
I wrote a ref class, and I want to implement [] operator. I tried various ways, without success.
What is the exact synrax?
I Hate MC++.
Thanks.
|
|
|
|
|
I don't use MC++, but the operator signatures for operator[] in
most flavors of C++ is typically as follows:
// return element for read/write
T& operator[](int index);
// return element for read-only
const T& operator[](int index) const;
Hope that was what you were looking for.
|
|
|
|
|
How can I detect a incoming phone call and display the number on the screen using C++ program
If possible send a code
Jack
|
|
|
|