Страница: 1 |
Страница: 1 |
Вопрос: hWnd элемента на форме
Добавлено: 28.04.05 10:41
Автор вопроса: freeloader | Web-сайт:
Запустил RadASM,
набросал несколько элементов на форму.
Теперь при работе программы, мне допустим с Hot надо получить введеные сочетания клавишь.
Как мне грамотно получить hWnd этого элемента(Hot).
Вот некоторые данные
NAME : IDC_HOT1
ID : 1001
Может по этим признакам можно получить hWnd этого элемента управления?
И что такое ID объясните мне пожалуйсто, а также для чего нужно это {NAME}?
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #1
Добавлено: 28.04.05 10:56
Здаётся мне что это банальный идентификатор контрола. Типа IDC_HOT1=1001.
А чтобы получить hWnd можно использовать диалоговые API.
Номер ответа: 2
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #3
Добавлено: 28.04.05 11:31
Еще хотел спросить что такое and eax, 0FFFFh - что она делает?
А калькулятор тебе на что? Сделай например ABCDEF12 AND FFFF и посмотри что получится.
GetDlgItem,hWin,IDC_HOT1 ?
Ничего не получается
Значит это либо не идентификатор, либо ты что то неправильно делаешь. А что пишешь вообще?
Номер ответа: 4
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #4
Добавлено: 28.04.05 11:49
Получается 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-сайт:
Профиль | | #6
Добавлено: 28.04.05 12:51
Получается EF12, а для чего это нужно?
По моему тебе нужно сначала подучить ассемблер, а потом уже браться за IDE. Это LoWord, что же это ещё может быть? Элементарные вещи ведь.
Как я делаю, я написал
Не написал, а описал. Покажи код.
Номер ответа: 7
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #7
Добавлено: 28.04.05 13:06
Вот тебе для наглядности:
#Compile Exe
Function PbMain
MsgBox Hex$(LoWrd(&HABCDEF12))
End Function
Номер ответа: 8
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #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 SendMessage,eax,HKM_GETHOTKEY,0,0
PrintDec al ;virtual key code
PrintDec ah ;modifier flag