1. Решил нарисовать простой прямоугольник на поверхности
- Код: Выделить всё
Private Structure Rect
Dim Left As Integer
Dim Top As Integer
Dim Right As Integer
Dim Bottom As Integer
End Structure
Private Declare Function FillRect Lib "user32" Alias "FillRect" (ByVal hdc As Integer, ByVal lpRect As Rect, ByVal hBrush As Integer) As Integer
...
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim mrRect As Rect
Dim hrBrush As Long
mrRect.Left = 0 : mrRect.Top = 0 : mrRect.Right = 300 : mrRect.Bottom = 300
hrBrush = CreateSolidBrush(RGB(255, 0, 0))
FillRect(PictureBox1.CreateGraphics.GetHdc().ToInt32, mrRect, hrBrush)
End Sub
пишет "Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена." на строке: FillRect(PictureBox1.CreateGraphics.GetHdc().ToInt32, mrRect, hrBrush)
Пробывал создавал свои DC все равно результат тот же .
2. В VB6 очень довольно часто пользовался функцией ObjPtr. Покопался в интернете нашешл что вроде бы аналог в .NET является:
- Код: Выделить всё
Public Function ObjPtr(ByVal o As Object) As Integer
Dim GC As System.Runtime.InteropServices.GCHandle = System.Runtime.InteropServices.GCHandle.Alloc(o, System.Runtime.InteropServices.GCHandleType.Pinned)
Dim ret As Integer = GC.AddrOfPinnedObject.ToInt32
GC.Free()
Return ret
End Function
Размещаю ее в модуле и при обращении к ней пишет: "Объект содержит данные, которые не являются примитивами или требуют преобразования." на строке "Dim GC As System.Runtime.InteropServices.GCHandle = System.Runtime.InteropServices.GCHandle.Alloc(o, System.Runtime.InteropServices.GCHandleType.Pinned)"
Ну вот пока что все