Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2015, 22:03   #1
Zerkal0
 
Регистрация: 06.11.2010
Сообщений: 9
По умолчанию Выпадающий список в окне

Всем добрый день!

В ассемблере не силён, не судите строго

Такой вопрос - пробую в Fasm-е написать простенькое оконное приложение по преобразованию чисел из одной системы счисления в другую.

На окне есть выпадающий список с выбором для указания в какой системе счисления введено число. Не получается заполнить его всеми значениями.
Т.е. должно показывать в списке - 2,8,10,16. А 16 не показывает



Весь день сегодня просидел, так и не понял что не так

Если кто поможет буду очень благодарен!

Код приложения
Цитата:
format PE GUI 4.0
include 'E:\Study\fasmw168\INCLUDE\win32ax. inc'
include 'E:\Study\fasmw168\INCLUDE\ENCODING \win1251.inc'
ID_CAPTION_1=101
ID_CAPTION_2=102
ID_CAPTION_3=103
ID_CAPTION_4=104
ID_COMBOBOX_1=105
ID_COMBOBOX_2=106


start:
invoke GetModuleHandle,0
mov [hInst],eax
invoke DialogBoxParam,eax,37,0,DlgProc,0 ; вызываем процедуру создания диалогового окна
invoke ExitProcess,0

proc DlgProc,hwnddlg,wmsg,wparam,lparam

cmp [wmsg], WM_CLOSE
je FreeDialog
cmp [wmsg], WM_INITDIALOG
je InitDialog
cmp [wmsg], WM_COMMAND
jne exitproc

; Получаем индекс выбранной сроки
invoke SendDlgItemMessage, [hwnddlg], ID_COMBOBOX_1, CB_GETCURSEL,NULL, NULL
; Получаем связанное с ней значение
invoke SendDlgItemMessage, [hwnddlg], ID_COMBOBOX_1, CB_GETITEMDATA,eax, NULL
; Выводим сообщение пользователю
;invoke MessageBox, 0, eax, _Caption, MB_OK
; Выход из диалоговой процедуры


; Выход из диалоговой процедуры
exitproc:
xor eax, eax
ret

; Участок кода ответственный за освобождение окна
FreeDialog:
invoke EndDialog, [hwnddlg], 0
xor eax,eax
ret
InitDialog:
; Заполняем список строками и связываем с ними их адреса
invoke SendDlgItemMessage, [hwnddlg], ID_COMBOBOX_1, CB_ADDSTRING,NULL,items
invoke SendDlgItemMessage, [hwnddlg], ID_COMBOBOX_1, CB_SETITEMDATA,eax, items
invoke SendDlgItemMessage, [hwnddlg], ID_COMBOBOX_1, CB_ADDSTRING,NULL, items+2
invoke SendDlgItemMessage, [hwnddlg], ID_COMBOBOX_1, CB_SETITEMDATA,eax, items+2
invoke SendDlgItemMessage, [hwnddlg], ID_COMBOBOX_1, CB_ADDSTRING,NULL, items+4
invoke SendDlgItemMessage, [hwnddlg], ID_COMBOBOX_1, CB_SETITEMDATA,eax, items+4
invoke SendDlgItemMessage, [hwnddlg], ID_COMBOBOX_1, CB_ADDSTRING,NULL , items+8
invoke SendDlgItemMessage, [hwnddlg], ID_COMBOBOX_1, CB_SETITEMDATA,eax, items+8

invoke SendDlgItemMessage, [hwnddlg], ID_COMBOBOX_1, CB_SETCURSEL, 0,0
xor eax, eax
ret
endp



;section '.data' data readable
items db '2', 0
db '8', 0
db '10',0
db '16',0
db 0 ; Признак конца списка
List_ID dd ? ; Дескриптор списка

hInst dd ?
message db 257 dup 0

section '.rsrc' resource data readable
directory RT_DIALOG,dialogs
resource dialogs,37,LANG_ENGLISH+SUBLANG_DEF AULT,demonstration

dialog demonstration,'Преобразование числа в 2,8,10,16 системе счисления',70,70,300,100,WS_CAPTION +WS_POPUP+WS_SYSMENU+DS_MODALFRAME
dialogitem 'STATIC','Введите число',-1,10,10,70,8,WS_VISIBLE
dialogitem 'EDIT','',ID_CAPTION_1,10,20,100,13 ,WS_VISIBLE+WS_BORDER+WS_TABSTOP
dialogitem 'STATIC','Сист-а счисления введён. числа',-1,10,40,120,8,WS_VISIBLE
dialogitem 'ComboBox', '', ID_COMBOBOX_1, 10, 50, 35, 45,\
WS_VISIBLE+LBS_SORT+LBS_NOTIFY

dialogitem 'STATIC','Результат',-1,180,10,70,8,WS_VISIBLE
dialogitem 'EDIT','',ID_CAPTION_3,180,20,100,1 3,WS_VISIBLE+WS_BORDER+WS_TABSTOP
dialogitem 'STATIC','Число в 10-й сист-е счисления',-1,180,40,130,8,WS_VISIBLE
dialogitem 'EDIT','',ID_CAPTION_4,180,50,100,1 3,WS_VISIBLE+WS_BORDER+WS_TABSTOP

dialogitem 'ComboBox', '', ID_COMBOBOX_2, 130, 20, 35, 45,\
WS_VISIBLE+LBS_SORT+LBS_NOTIFY


dialogitem 'BUTTON','Перевести',IDOK,130,70,45 ,15,WS_VISIBLE+WS_TABSTOP+BS_DEFPUS HBUTTON
enddialog
.end start
Zerkal0 вне форума Ответить с цитированием
Старый 02.03.2015, 03:52   #2
AbakBarama
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 57
По умолчанию

Атрибут WS_VSCROLL должен помочь.
AbakBarama вне форума Ответить с цитированием
Старый 02.03.2015, 08:55   #3
Zerkal0
 
Регистрация: 06.11.2010
Сообщений: 9
По умолчанию

AbakBarama, спасибо, что ответили!

Попробовал добавить атрибут WS_VSCROLL, появился скроллинг и прокрутив вниз можно найти последний элемент. Но он почему то не 16, а 6. Т.е. первая цифра обрезается. Остальные элементы отображаются нормально.


И можно ли как-то сделать чтобы без скроллинга, сразу все 4 пункта в списке были видны?
Zerkal0 вне форума Ответить с цитированием
Старый 02.03.2015, 15:25   #4
AbakBarama
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 57
По умолчанию

Чтобы вместо 6 стало 16 - поменять items+8 на items+7.

Чтобы без скроллинга - сделать высоту комбобокса не 45, а поболее.
AbakBarama вне форума Ответить с цитированием
Старый 02.03.2015, 22:16   #5
Zerkal0
 
Регистрация: 06.11.2010
Сообщений: 9
По умолчанию

Да, вышло.
А Вы могли бы объяснить что не так в моих рассуждениях.
Первый элемент - items
Второй - items+2
Третий - items+4
Четвёртый - должен же быть items+6. Почему 7 ?
Zerkal0 вне форума Ответить с цитированием
Старый 08.03.2015, 19:49   #6
Zerkal0
 
Регистрация: 06.11.2010
Сообщений: 9
По умолчанию

Возникла ещё такая загагулина

Резервирую переменную

section '.bss' readable writeable
caption1_text rb 20h

Далее считываю и пробую вводить её значение

;invoke GetDlgItemText, [hInst], ID_CAPTION_1, caption1_text,20h ; ID_CAPTION_1 -это айдишник edit поля
invoke MessageBox, [hwnddlg],caption1_text, caption1_text, MB_OK

MessageBox выводит пустой
Zerkal0 вне форума Ответить с цитированием
Старый 08.03.2015, 20:34   #7
Zerkal0
 
Регистрация: 06.11.2010
Сообщений: 9
По умолчанию

Проблема решена. Всем спасибо)
Zerkal0 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выпадающий список maksikus PHP 3 30.01.2015 18:03
Выпадающий список CWD Microsoft Office Excel 1 05.10.2013 19:33
Выпадающий список aza-mat Microsoft Office Excel 11 04.05.2011 06:54
Выпадающий список в окне запроса Bender000 Microsoft Office Access 2 08.05.2010 14:20
выпадающий список SunKnight БД в Delphi 1 24.03.2008 22:44