Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт сен 26, 2017 12:19 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 55 сообщений ]  На страницу 1 2 3 4 След.
Автор Сообщение
 Заголовок сообщения: Message Box
СообщениеДобавлено: Сб мар 14, 2009 2:21 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 742
Решил написать программу для вывода сообщений (или MessageBox).
Текст в окно передается через IPC сообщение.
В коде программы нужно объявить: заголовок, текст, подписи кнопок. Потом передать их окну :
Код:
msgbox_2:
  dw 0
  db 'MBox 3 but',0
  db 'Example 3 buttons',0
  db 'Ok',0 ;button1
  db 'Cancel',0 ;button2
  db 'Help',0 ;button3
  db 0
.mb_end:

Подробный пример использования в файле use_mb.asm .
Скомпилированный пример в файле use_mb.kex .
---
Думаю что можно стандартизировать этот пример и использовать в любой программе.
Также жду замечаний и идей по доработке ...


Вложения:
Комментарий к файлу: 14.03.2009
msgbox.7z [4.43 КБ]
158 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Вс мар 15, 2009 8:54 am 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Вт янв 15, 2008 11:27 am
Сообщения: 750
отличная работа! но может лучше было создание MessageBox оформить в виде библиотеки (.obj)? так пользователям более привычно, чем IPC. а создание окна сделать, естественно, в отдельном потоеке...


Вернуться к началу
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Вс мар 15, 2009 2:58 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт янв 24, 2006 8:50 am
Сообщения: 249
IgorA,
хорошая работа....

Albom,
поддерживаю... *.obj не помешал бы...


Вернуться к началу
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Вс мар 15, 2009 5:48 pm 
Не в сети

Зарегистрирован: Вс окт 05, 2008 2:42 pm
Сообщения: 26
IgorA, молодца, так держать!
Цитата:
*.obj не помешал бы...

_________________
In GNU we trust ;-)


Вернуться к началу
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Вс мар 15, 2009 8:50 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 742
Если сделать в библиотеке, то думаю будет удобнее использовать.
Сообщение должно давать ответ, какая кнопка нажата, а через IPC это не очень удобно будет сделать.
Надо будет над этим подумать, раньше пока еще не писал библиотеки.


Вернуться к началу
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Вт мар 17, 2009 1:13 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 742
Хочу переписать код в библиотеку, а компилятор выдает ошибку на подобные строки :( :
Код:
  mov esi,msgbox_1+MB_TEXT_OFFSET
.........
msgbox_1:

т. е. не дает адрес (смещение) переменной (или метки) msgbox_1 записать в регистр
Убираю из кода строки:
Код:
format MS COFF
public EXPORTS
section '.flat' code readable align 16

компилируется нормально (но в бинарник, а мне нужно obj получить).
Кто знает как получить адрес, чтобы заработало ? Я так думаю, что когда создается библиотека переменные не имеют адресов, потому что не известно куда будет присоедина библиотека... а может я не прав ?


Вернуться к началу
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Вт мар 17, 2009 1:33 am 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Полный код в студию. Сами по себе приведённые строчки должны скомпилироваться. Если в начале ранее выкладываемого исходника написать "format MS COFF / section '.flat' code readable align 16", то код прекрасно компилится в obj (хотя, разумеется, результат никак не является библиотекой).

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Вт мар 17, 2009 1:45 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 742
даю код.


Вернуться к началу
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Вт мар 17, 2009 9:31 am 
IgorA
Нужно принудительно указывать размерность, вместо:
Код:
mov edi,msgbox_1

сделать так:
Код:
mov edi,dword msgbox_1

Ну, и так далее во всех местах где FASM ругается.


Вернуться к началу
   
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Вт мар 17, 2009 10:24 am 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
macros.inc делает замену для mov, которая не работает в случае компиляции в obj. Просто добавь "purge mov" после включения macros.inc.

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Вт мар 17, 2009 7:38 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 742
все получилось :D
вот теперь через библиотеку сделал, и кроме того несколько доработок ...
код нажатой кнопки возвращается в вызвавшую программу


Вложения:
Комментарий к файлу: 17.03.2009
msgbox.7z [5.65 КБ]
141 скачивание
Вернуться к началу
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Ср мар 18, 2009 10:35 am 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Вт янв 15, 2008 11:27 am
Сообщения: 750
вот это другое дело! только во-первых, почему так запутанно? а во-вторых, может я и ошибаюсь, но экспортируемые функции не stdcall? а хотелось бы... и описания (или хотя бы прототипы) не помешали бы (хотя работающий пример уже хорошо).


Вернуться к началу
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Ср мар 18, 2009 2:00 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт янв 24, 2006 8:50 am
Сообщения: 249
Albom, есть исходники же.. =)))... так что исправь как лучше будет...


Вернуться к началу
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Ср мар 18, 2009 6:14 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 742
Albom
Цитата:
функции не stdcall?

Т. е. параметры передаются не через стек? Это потому что я пока не очень хорошо знаю подходы программирования на asm, потому параметры давал через регистры. А в справочных документах обычно дается простое описание команд: какая что делает, без практических применений.
Цитата:
хотелось бы... и описания

описание дать могу, но для этого нужно некоторое время

Хорошо бы еще:
1) немного поменять алгоритм перемещения кнопками,
2) более точно вычислить координаты окна (ширину, и наверное в центр окна его надо)
3) продумать задержку выполнения программы, пока не будет нажата кнопка (т. е. создать модальное окно)
4) продумать как будет работать программа если нужно создать несколько сообщений
вобщем есть еще над чем подумать


Вернуться к началу
 Заголовок сообщения: Re: Message Box
СообщениеДобавлено: Ср мар 18, 2009 7:19 pm 
Не в сети

Зарегистрирован: Пт окт 12, 2007 1:04 pm
Сообщения: 141
IgorA
По поводу stdcall и вообще библиотек можно посмотреть исходники libs-dev.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 55 сообщений ]  На страницу 1 2 3 4 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB