powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / А как в .Net скопировать m.lparam в структуру?
3 сообщений из 3, страница 1 из 1
А как в .Net скопировать m.lparam в структуру?
    #38394200
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например в 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
А как в .Net скопировать m.lparam в структуру?
    #38394202
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что ли?
Код: 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
А как в .Net скопировать m.lparam в структуру?
    #38394261
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Так что ли?
похоже
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / А как в .Net скопировать m.lparam в структуру?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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