Excellent... I hadn't realized from looking at the online help that UDTs were this capable. Cool! Now if we could just get them to be return-able from a function...

... and something like this to work:
<same as above but add the following>
p as DWORD
e as MyData
make memblock 1, 100
p = get memblock ptr(1)
*p = c
e = *p
The trick would be to make the compiler assume that a pointer variable automatically is pointing to something that is the UDT on the left-hand side of the equals, instead of complaining that both sides need the same members...

Weirdly enough, the compiler seems to accept the "*p = c" line. I wonder if it actually copies c into the memblock or not...? Not a ton of good if you can't get it back into a UDT though...
Desktop: AMD900/256MB/Radeon 8500 64MB/Win98SE/DX9.0b/Catalyst 3.7
Laptop: P3-850/384MB/GeForce2 Go 16MB/WinXP Pro/DX9.0b/Detonator 45.23