Click here to Skip to main content
15,903,362 members
Home / Discussions / C#
   

C#

 
GeneralRe: Troubles with Owner-draw TextBox... Pin
Mike0108-Feb-04 9:29
Mike0108-Feb-04 9:29 
GeneralRe: Troubles with Owner-draw TextBox... Pin
Heath Stewart8-Feb-04 18:13
protectorHeath Stewart8-Feb-04 18:13 
GeneralRe: Troubles with Owner-draw TextBox... Pin
Mike0109-Feb-04 4:43
Mike0109-Feb-04 4:43 
GeneralAdapt forms to screen resolution Pin
haezeban8-Feb-04 7:55
haezeban8-Feb-04 7:55 
GeneralRe: Adapt forms to screen resolution Pin
Mazdak8-Feb-04 8:24
Mazdak8-Feb-04 8:24 
GeneralRe: Adapt forms to screen resolution Pin
Heath Stewart8-Feb-04 18:07
protectorHeath Stewart8-Feb-04 18:07 
Questionminimize to tray? Pin
visiontec8-Feb-04 7:43
visiontec8-Feb-04 7:43 
AnswerRe: minimize to tray? Pin
OmegaSupreme8-Feb-04 10:18
OmegaSupreme8-Feb-04 10:18 
GeneralRe: minimize to tray? Pin
visiontec9-Feb-04 11:34
visiontec9-Feb-04 11:34 
GeneralRe: minimize to tray? Pin
OmegaSupreme9-Feb-04 15:25
OmegaSupreme9-Feb-04 15:25 
GeneralAdding parameters to a table Pin
Andrlage8-Feb-04 5:30
Andrlage8-Feb-04 5:30 
GeneralRe: Adding parameters to a table Pin
Nick Parker8-Feb-04 6:02
protectorNick Parker8-Feb-04 6:02 
QuestionMost efficient way of doing this? Pin
Alex Korchemniy7-Feb-04 22:31
Alex Korchemniy7-Feb-04 22:31 
GeneralZooming approach Pin
Meysam Mahfouzi7-Feb-04 18:08
Meysam Mahfouzi7-Feb-04 18:08 
GeneralRe: Zooming approach Pin
Heath Stewart7-Feb-04 19:00
protectorHeath Stewart7-Feb-04 19:00 
GeneralCombo Box problem... Pin
je_gonzalez7-Feb-04 17:27
je_gonzalez7-Feb-04 17:27 
GeneralDatabase Pin
ASGill7-Feb-04 17:16
ASGill7-Feb-04 17:16 
GeneralRe: Database Pin
Heath Stewart7-Feb-04 18:50
protectorHeath Stewart7-Feb-04 18:50 
GeneralMore Thread Troubles; not sure if it's deadlock Pin
Peter Mills7-Feb-04 14:41
Peter Mills7-Feb-04 14:41 
GeneralRe: More Thread Troubles; not sure if it's deadlock Pin
Heath Stewart7-Feb-04 18:58
protectorHeath Stewart7-Feb-04 18:58 
GeneralWell it's got me stumped Pin
Rob Manderson7-Feb-04 14:08
protectorRob Manderson7-Feb-04 14:08 
GeneralRe: Well it's got me stumped Pin
Rob Manderson7-Feb-04 16:25
protectorRob Manderson7-Feb-04 16:25 
GeneralRe: Well it's got me stumped Pin
Heath Stewart7-Feb-04 19:08
protectorHeath Stewart7-Feb-04 19:08 
You don't need to use an unsafe context. Instead of using byte* just use ref byte; ref and out should typically be used for pointers to value types, while they shouldn't be used for reference types - since they're already references - exception when a pointer to a pointer is needed.

Instead of declaring your param as an IntPtr for your struct or enum, you can typically use the ref keyword as well. Take, for example, the typical declaration of SendMessage:
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int handle,
  IntPtr wParam, IntPtr lParam);
This means that if you want to pass a pointer to a struct (say, for a window message to a common control) that you have to use the method Marshal.StructureToPtr and then pass it. Instead, a much easier - and perfectly ligitimate - alternative would be like so:
[DllImport("user32.dll")]
IntPtr SendMessage(IntPtr hWnd, int msg,
  ref MyStruct wParam, IntPtr lParam);
All this is done without requiring an unsafe context, which is typically only useful for when you have to perform address references or allocate memory for native calls without using CoTaskMemAlloc or GlobalAlloc (which are available from the Marshal as managed calls).

Keep these things in mind, remember that enums are value types too, and you should find a better, easier alternative.

 

Microsoft MVP, Visual C#
My Articles
GeneralRe: Well it's got me stumped Pin
Rob Manderson7-Feb-04 22:25
protectorRob Manderson7-Feb-04 22:25 
GeneralRe: Well it's got me stumped Pin
Heath Stewart8-Feb-04 5:40
protectorHeath Stewart8-Feb-04 5:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.