Solved

usage of System.IntPtr

Posted on 2008-10-08
6
1,193 Views
Last Modified: 2013-11-05
Hello,

where would you use the System.IntPtr class?
The documentation writes "A platform-specific type that is used to represent a pointer or a handle."

thanks
0
Comment
Question by:xRalf
  • 3
  • 2
6 Comments
 
LVL 15

Expert Comment

by:angus_young_acdc
ID: 22667764
Its a method of referring between different development languages, and for handles such as FileStream (it will hold the file handles).
0
 
LVL 6

Author Comment

by:xRalf
ID: 22667902
Try to send some minimalistic code snippet that will do something useful...
0
 
LVL 15

Expert Comment

by:angus_young_acdc
ID: 22669311
Snippet for print window on a picturebox.

private System.Windows.Forms.PictureBox pp;
pp = new PictureBox();
System.IntPtr hwnd = pp.Handle;
Bitmap bm = new Bitmap (pp.Size.Width, pp.Size.Height);
if (bm != null)
{
using (Graphics g = Graphics.FromImage (bm))
{
System.IntPtr bmDC = g.GetHdc ();
bool ok =true;
ok = PrintWindow (hwnd, bmDC,0);
MessageBox.Show(ok.ToString());
g.ReleaseHdc (bmDC);
}
}
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 6

Author Comment

by:xRalf
ID: 22669547
Thanks,

I tried to compile the snippet, but it doesn't compile because function PrintWindow doesn't exist. I'd like to compile it to see why IntPtr is useful and what is it good for.
0
 
LVL 15

Assisted Solution

by:angus_young_acdc
angus_young_acdc earned 100 total points
ID: 22669826
Here is an example to play a wave file from MS:

http://msdn.microsoft.com/en-us/library/ms173187(VS.80).aspx
0
 
LVL 55

Accepted Solution

by:
Jaime Olivares earned 150 total points
ID: 22669887
IntPtr represents a pointer, that obviuosly point to a non-managed resource (since managed environment don't use pointers but references). Also can represent an arbitrary 32-bit value like a resource handle (hWnd, hProcess, etc.)
So, IntPtr can be used when invoking a non-managed function like Platform (WinAPI) invoking.
Some related articles with real examples:
http://www.codeproject.com/KB/cs/unmanaged_memory_pointers.aspx
http://www.ondotnet.com/pub/a/dotnet/2002/02/18/cominterop.html
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article describes a simple method to resize a control at runtime.  It includes ready-to-use source code and a complete sample demonstration application.  We'll also talk about C# Extension Methods. Introduction In one of my applications…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

679 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question