Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Assembler

Страница: 1 |

 

  Вопрос: hWnd элемента на форме Добавлено: 28.04.05 10:41  

Автор вопроса:  freeloader  | Web-сайт: freeloader.folder-pro.net | ICQ: 50804884 
Запустил RadASM,
набросал несколько элементов на форму.

Теперь при работе программы, мне допустим с Hot надо получить введеные сочетания клавишь.
Как мне грамотно получить hWnd этого элемента(Hot).
Вот некоторые данные
NAME : IDC_HOT1
ID : 1001
Может по этим признакам можно получить hWnd этого элемента управления?

И что такое ID объясните мне пожалуйсто, а также для чего нужно это {NAME}?

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #1
Добавлено: 28.04.05 10:56
 Здаётся мне что это банальный идентификатор контрола. Типа IDC_HOT1=1001.
 А чтобы получить hWnd можно использовать диалоговые API.

Ответить

Номер ответа: 2
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #2
Добавлено: 28.04.05 11:06

GetDlgItem,hWin,IDC_HOT1 ?
Ничего не получается :(

.if eax==WM_INITDIALOG
invoke GetDlgItem,hWin,IDC_HOT1
mov hHot, eax
.elseif eax==WM_COMMAND
mov eax, wParam
and eax, 0FFFFh
.if eax==IDC_BTN1
invoke GetWindowText,hHot,addr lpString, addr lgSize
invoke MessageBox,hWin,addr lpString, addr lpCaption,MB_OK

Еще хотел спросить что такое and eax, 0FFFFh - что она делает?

Ответить

Номер ответа: 3
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 28.04.05 11:31

Еще хотел спросить что такое and eax, 0FFFFh - что она делает?

 А калькулятор тебе на что? Сделай например ABCDEF12 AND FFFF и посмотри что получится.


GetDlgItem,hWin,IDC_HOT1 ?
Ничего не получается :(

 Значит это либо не идентификатор, либо ты что то неправильно делаешь. А что пишешь вообще?

Ответить

Номер ответа: 4
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #4
Добавлено: 28.04.05 11:49

А калькулятор тебе на что? Сделай например ABCDEF12 AND FFFF и посмотри что получится.

Получается EF12, а для чего это нужно?

Значит это либо не идентификатор, либо ты что то неправильно делаешь. А что пишешь вообще?

Как я делаю, я написал
Просто решил познакомится со средой RadASM'a

Ответить

Номер ответа: 5
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #5 Добавлено: 28.04.05 12:41
and 0FFFFh нужен, чтобы выделить из дворда wParam младший ворд, являющийся идентификатором контрола. См. структуру wParam при WM_COMMAND.

О GetDlgItem,hWin,IDC_HOT1:
Константа IDC_HOT1 оговорена в секции .const или нет?

Ответить

Номер ответа: 6
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #6
Добавлено: 28.04.05 12:51

Получается EF12, а для чего это нужно?

 По моему тебе нужно сначала подучить ассемблер, а потом уже браться за IDE. Это LoWord, что же это ещё может быть? Элементарные вещи ведь.


Как я делаю, я написал

 Не написал, а описал. Покажи код.

Ответить

Номер ответа: 7
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #7
Добавлено: 28.04.05 13:06
Вот тебе для наглядности:

#Compile Exe

Function PbMain
 MsgBox Hex$(LoWrd(&HABCDEF12))
End Function

Ответить

Номер ответа: 8
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #8
Добавлено: 28.04.05 15:20
2HOOLIGAN,
Да она у меня находится в секции .const

2CyRax,
непременно, когда будет решен этот вопрос

DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
mov eax,uMsg
.if eax==WM_INITDIALOG

.elseif eax==WM_COMMAND
mov eax, wParam
and eax, 0FFFFh
.if eax==IDC_BTN1
invoke GetDlgItem,hWin,IDC_HOT1
invoke GetDlgItemText,hWin,eax, addr lpString, 255

;invoke GetWindowText,hHot,addr lpString, addr lgSize
invoke MessageBox,hWin,addr lpString, addr lpCaption,MB_OK
.endif
.elseif eax==WM_CLOSE
invoke EndDialog,hWin,0
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret

DlgProc endp

end start

'Includes inc
.const

IDD_DIALOG1 equ 101
IDC_HOT1 equ 1001
IDC_BTN1 equ 1002


Этого достаточно? или весь проект выслать? :)

Ответить

Номер ответа: 9
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #9
Добавлено: 28.04.05 16:00

Этого достаточно? или весь проект выслать? :)

 Что то из цикла "У меня не работает прога. Памагите!!!", а потом в течение 100 ответов из спрашивающего вытягивают исходник. :)

Ответить

Номер ответа: 10
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #10 Добавлено: 28.04.05 16:18
И что не получается? Конкретно опиши, в чем проблема.

Что в аккумуляторе после вызова GetDlgItem ?

Вот эта строка:
invoke GetDlgItemText,hWin,eax, addr lpString, 255
не сработает.
HotKey - это не текстбокс, чтобы таким способом получить из него инфу.
С HotKey общаются посредством сообщений HKM_GETHOTKEY. Возвращаемое значение - комбинация virtual key code и modifier flag (HOTKEYF_ALT, HOTKEYF_CONTROL, HOTKEYF_EXT, HOTKEYF_SHIFT).
virtual key code - младшие 8 бит, modifier flag - старшие 8 бит.

Ответить

Номер ответа: 11
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #11 Добавлено: 28.04.05 16:22
Т.е. выглядит это так:

    invoke GetDlgItem,hWin,IDC_HOT1
    invoke SendMessage,eax,HKM_GETHOTKEY,0,0
    PrintDec al    ;virtual key code
    PrintDec ah    ;modifier flag

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам