|
Unfortunately I have never used forms with .NET. There's many helpful people on the .NET boards
that have though
I have no idea what class your "this->b_em.pct" object is so, based on what I see, the only
guess I can make is the Load() method call is failing - is the b_em.jpg file in the app exe folder
or in the system path?
Mark
|
|
|
|
|
b_em is from structure
ref struct tank {<br />
int step_x, step_y; <br />
System::Windows::Forms::PictureBox^ pct;<br />
};
b_em.jpg is at app exe folder
that code is at void InitializeComponent(void) function
|
|
|
|
|
Dear thesad
if you ask on the correct forum(Managed C++/CLI) you can find your answer early
|
|
|
|
|
Ok. I'll take another wild guess - pct is NULL.
Maybe try
//System::Windows::Forms::PictureBox^ pct = gcnew System::Windows::Forms::PictureBox();
b_em.pct = gcnew System::Windows::Forms::PictureBox();
b_em.pct->Load(...
You can save yourself lots of typing by omitting the implied "this->"
|
|
|
|
|
many thanks Mark, it really help
|
|
|
|
|
You are welcome
Really, consider the C++/CLI board for future CLI-related questions. I get so confused trying to
think in .NET when I'm on the C++ board.
Cheers!
Mark "flailing in the dark" Salsbery
|
|
|
|
|
Your first step should be to set a breakpoint with the debugger ( F9 ) and examine your code to see which line blows up, then check to see what variable is null, causing the error. Everything else, is flailing in the dark.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
Hy, since most of you have probably been programming in MFC for a very long time, I was wondering if you could give me some tips on how to improve my programming skills in C++. Thanks
Alessandra
|
|
|
|
|
first tip :
MFC != C++
second tip :
initialize all variables.
third tip :
check that all pointers are valid before using them.
...
|
|
|
|
|
Maximilien wrote: check that all pointers are valid before using them.
I'm of the opinion that that is a bad idea. For example, consider code that follows the following pattern throughout:
if (p)
{
p->SomeFunction();
}
Many people (most people, in fact) get into the habit of doing this even when it is a bug for p to be NULL. Assuming p should never be NULL the extra check turns a crash at the point of the problem into some obscure problem later down the track as the function SomeFunction was never called. I’ve seen this many, many times. A better approach is as follows:
assert(p);
p->SomeFunction();
In a debug build we assert and in a release build you get a crash dump (because naturally everyone collects crash dumps from MS…) which points you at the problem.
As for IsBadReadPointer and friends, see here[^].
Steve
|
|
|
|
|
I did not offer anything else than "check the pointers" either you use asserts, if or some exceptions, you need to do it anyway.
Stephen Hewitt wrote: As for IsBadReadPointer and friends, see here[^].
I never use or used those functions.
|
|
|
|
|
Alessandra77 wrote: ...tips on how to improve my programming skills in C++
Fourth tip:
live it, breathe it, love it.
|
|
|
|
|
fifth tip:
go get a break (and use that time to buy a book)
|
|
|
|
|
Maybe you think its not necessary but always provide comments for your code ,use of become names for variables,your program must check exception
|
|
|
|
|
Thanks to you all!
Alessandra
|
|
|
|
|
You're welcome
|
|
|
|
|
Hello,
I think if I have an object of CDatabase class,to which if a proper connection string is given then it enables me to access a database from a server whose OS is windows xp.
But if the OS is Unix or linux then what changes I have to bring about in my program written in VC++ for windows.
I have a different OS only on the server .
Will the code wriiten on the server using CSocket class work ?
Where am I going wrong.Which topics should I cover?
Thanks
Prithaa
|
|
|
|
|
it doesn't matter what OS runs on the remote dataabase server because Sockets are made to communicate through IP protocol so fully independant of the implementation
|
|
|
|
|
Hello,
Thanks
Which topics should I cover to understand databases and remote access of data
Prithaa
|
|
|
|
|
I am a new poster, and a long time reader... that sounds so familiar... and cheesy.
Anyhow, I am experiencing some strange errors while compiling my application for 64 bit, and have tried google without much luck.
One of the more consfusing problems I am running into is with the following line that compiles fine in 32 bit, but not 64 bit, and am looking for advice or direction (even a smack in the head - if its obvious).
Here is the line, and the compile error, as well as the definition of the function being called...
definitions
WINMMAPI MMRESULT WINAPI timeSetEvent( IN UINT uDelay, IN UINT uResolution,<br />
IN LPTIMECALLBACK fptc, IN DWORD_PTR dwUser, IN UINT fuEvent);<br />
void TSstringSocket::SelectTimer(UINT wTimerID, UINT msg, ULONG_PTR dwUser, DWORD dw1, DWORD dw2) {<br />
...<br />
}<br />
Code
UINT m_timerID;<br />
m_timerID = timeSetEvent( 100, wTimerRes, SelectTimer, (ULONG_PTR)this, TIME_PERIODIC );<br />
Error
Error 162 error C2664: 'timeSetEvent' : cannot convert parameter 3 from 'void (__cdecl *)(UINT,UINT,ULONG_PTR,DWORD,DWORD)' to 'LPTIMECALLBACK' c:\Documents and Settings\mikec\Desktop\tix64\Backend\BaseObjects\TSstringSocket.cpp 217 <br />
Any ideas?
Mike Curry
-- modified at 11:17 Tuesday 13th February, 2007
|
|
|
|
|
So what does SelectTimer() look like?
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Its very lengthy, but I will post the definition...
void TSstringSocket::SelectTimer(UINT wTimerID, UINT msg, ULONG_PTR dwUser, DWORD dw1, DWORD dw2)
I probably should have posted that earlier, sorry
|
|
|
|
|
Mike Curry - Canada wrote: void TSstringSocket::SelectTimer(UINT wTimerID, UINT msg, ULONG_PTR dwUser, DWORD dw1, DWORD dw2)
Does this match what a LPTIMECALLBACK is?
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
I don't think so, however under the 32 bit compile it seems to work without issue.
|
|
|
|
|
i think i'm reading this correctly...
the 4th param on your type declaration, "DWORD_PTR dwUser", that's going to be a 64 bit pointer in x64, but you've apparently defined your function to take a DWORD (which remains 32-bits in x64) ?
|
|
|
|