Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / А как в .Net скопировать m.lparam в структуру? / 3 сообщений из 3, страница 1 из 1
12.09.2013, 00:53
    #38394200
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как в .Net скопировать m.lparam в структуру?
Например в VB6 код такой:
Код: vbnet
1.
2.
3.
4.
    Case WM_DRAWITEM
      'Debug.Print "WM_DRAWITEM"
      Call CopyMemory(dm, ByVal lParam, Len(dm))
      If dm.CtlType = ODT_MENU Then



В .Net пока накатал:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
  Private Structure RECT
    Public Left As Integer
    Public Top As Integer
    Public Right As Integer
    Public Bottom As Integer
  End Structure

  ' DRAWITEMSTRUCT for ownerdraw
  Private Structure DRAWITEMSTRUCT
    Public CtlType As Integer
    Public CtlID As Integer
    Public itemID As Integer
    Public itemAction As Integer
    Public itemState As Integer
    Public hwndItem As IntPtr
    Public hdc As IntPtr
    Public rcItem As RECT
    Public itemData As IntPtr
  End Structure

 Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
...
    Dim dm As DRAWITEMSTRUCT
...
    Select Case m.Msg
...
      Case WM_DRAWITEM 
        Debug.WriteLine("WM_DRAWITEM")
        dm =   'надо m.LParam -> DRAWITEMSTRUCT


И как???

Кстати, меня несколько смущают
Код: vbnet
1.
2.
Private Structure 
 Public CtlType as... 


без Public в членах структуры пишет недоступен и т.п.
В VB6 я в аналогах использовал
Код: vbnet
1.
2.
Private Type
   CtlType as... 


Чего-то пока не догоняю, подскажите.
...
Рейтинг: 0 / 0
12.09.2013, 01:12
    #38394202
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как в .Net скопировать m.lparam в структуру?
Так что ли?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Imports System.Runtime.InteropServices

      Case WM_DRAWITEM 
        Debug.WriteLine("WM_DRAWITEM")
        dm = CType(Marshal.PtrToStructure(m.LParam, GetType(DRAWITEMSTRUCT)),  _
         DRAWITEMSTRUCT)
        If dm.CtlType = ODT_MENU Then
          Debug.WriteLine("ODT_MENU")
        End If
...
Рейтинг: 0 / 0
12.09.2013, 09:03
    #38394261
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А как в .Net скопировать m.lparam в структуру?
Дмитрий77Так что ли?
похоже
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / А как в .Net скопировать m.lparam в структуру? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]