/*
I am trying to use message box instead of Console::WriteLine() to upgrade my
code from just using the console to using GUI.
In the bottom 2 lines, #1 works, but I have hard time to make # 2 works. Can
anybody give a hand here to make the information to be shown on the message
box instead of being shown on the console.
I am using visual C++ .NET 2003
Thanks
*/
#include "stdafx.h"
#include <gcroot.h>
#using <mscorlib.dll>
using namespace System;
using namespace System::Runtime::InteropServices;
typedef void* HWND;
[DllImportAttribute("User32.dll", CharSet=CharSet::Auto)]
extern "C" int MessageBox(HWND hw, String* text,
String* caption, unsigned int type);
__gc class MClass
{
public:
int val;
MClass(int n) //costructor
{
val = n;
}
};
class UClass
{
public :
gcroot<MClass*> mc;
UClass(MClass* pmc) //constructor
{
mc = pmc;
}
int getValue() //get function
{
return mc->val;
}
};
int _tmain()
{
Console::WriteLine(S"Testing...");
//Create a managed object and assign 3 to it
MClass* pm = new MClass (3);
//Create an unmanaged object and assign the value of the manged object (pm)
to it
UClass uc(pm);
Console::WriteLine(S"Value is {0}", __box(uc.getValue())); //<-------- This
will work # 1
//MessageBox(0, uc.getValue(), S"Message Box...", 0 ); //<------- this will
not work # 2
return 0;
}
Herfried K. Wagner [MVP] - 02 Jun 2007 13:18 GMT
"Allen Maki" <allenmaki@sbcglobal.net> schrieb:
> I am trying to use message box instead of Console::WriteLine() to upgrade
> my code from just using the console to using GUI.
>
> In the bottom 2 lines, #1 works, but I have hard time to make # 2 works.
> Can anybody give a hand here to make the information to be shown on the
> message box instead of being shown on the console.
Remove the 'DllImport' and use 'System::Windows::Forms::MessageBox' instead,
which provides a 'Show' method.

Signature
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Allen Maki - 03 Jun 2007 01:19 GMT
Sorry Herfried,
It does not work.
> "Allen Maki" <allenmaki@sbcglobal.net> schrieb:
>> I am trying to use message box instead of Console::WriteLine() to upgrade
[quoted text clipped - 6 lines]
> Remove the 'DllImport' and use 'System::Windows::Forms::MessageBox'
> instead, which provides a 'Show' method.
Herfried K. Wagner [MVP] - 03 Jun 2007 01:47 GMT
"Allen Maki" <allenmaki@sbcglobal.net> schrieb:
> Sorry Herfried,
> It does not work.
Are you sure you didn't forget to "import" "System.Windows.Forms.dll", which
contains the 'MessageBox' class? If this doesn't fix your problem, I
suggest to post the code that doesn't work.

Signature
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>