Message Box

...
  • отличная работа! но может лучше было создание MessageBox оформить в виде библиотеки (.obj)? так пользователям более привычно, чем IPC. а создание окна сделать, естественно, в отдельном потоеке...
  • IgorA,
    хорошая работа....

    Albom,
    поддерживаю... *.obj не помешал бы...
  • IgorA, молодца, так держать!
    *.obj не помешал бы...
    In GNU we trust ;-)
  • Если сделать в библиотеке, то думаю будет удобнее использовать.
    Сообщение должно давать ответ, какая кнопка нажата, а через IPC это не очень удобно будет сделать.
    Надо будет над этим подумать, раньше пока еще не писал библиотеки.
  • Хочу переписать код в библиотеку, а компилятор выдает ошибку на подобные строки :( :

    Code: Select all

      mov esi,msgbox_1+MB_TEXT_OFFSET
    .........
    msgbox_1:
    т. е. не дает адрес (смещение) переменной (или метки) msgbox_1 записать в регистр
    Убираю из кода строки:

    Code: Select all

    format MS COFF
    public EXPORTS
    section '.flat' code readable align 16
    компилируется нормально (но в бинарник, а мне нужно obj получить).
    Кто знает как получить адрес, чтобы заработало ? Я так думаю, что когда создается библиотека переменные не имеют адресов, потому что не известно куда будет присоедина библиотека... а может я не прав ?
  • Полный код в студию. Сами по себе приведённые строчки должны скомпилироваться. Если в начале ранее выкладываемого исходника написать "format MS COFF / section '.flat' code readable align 16", то код прекрасно компилится в obj (хотя, разумеется, результат никак не является библиотекой).
    Ушёл к умным, знающим и культурным людям.
  • даю код.
  • IgorA
    Нужно принудительно указывать размерность, вместо:

    Code: Select all

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

    Code: Select all

    mov edi,dword msgbox_1
    
    Ну, и так далее во всех местах где FASM ругается.
  • macros.inc делает замену для mov, которая не работает в случае компиляции в obj. Просто добавь "purge mov" после включения macros.inc.
    Ушёл к умным, знающим и культурным людям.
  • все получилось :D
    вот теперь через библиотеку сделал, и кроме того несколько доработок ...
    код нажатой кнопки возвращается в вызвавшую программу
    Attachments
    msgbox.7z (5.65 KiB)
    17.03.2009
    Downloaded 426 times
  • вот это другое дело! только во-первых, почему так запутанно? а во-вторых, может я и ошибаюсь, но экспортируемые функции не stdcall? а хотелось бы... и описания (или хотя бы прототипы) не помешали бы (хотя работающий пример уже хорошо).
  • Albom, есть исходники же.. =)))... так что исправь как лучше будет...
  • Albom
    функции не stdcall?
    Т. е. параметры передаются не через стек? Это потому что я пока не очень хорошо знаю подходы программирования на asm, потому параметры давал через регистры. А в справочных документах обычно дается простое описание команд: какая что делает, без практических применений.
    хотелось бы... и описания
    описание дать могу, но для этого нужно некоторое время

    Хорошо бы еще:
    1) немного поменять алгоритм перемещения кнопками,
    2) более точно вычислить координаты окна (ширину, и наверное в центр окна его надо)
    3) продумать задержку выполнения программы, пока не будет нажата кнопка (т. е. создать модальное окно)
    4) продумать как будет работать программа если нужно создать несколько сообщений
    вобщем есть еще над чем подумать
  • IgorA
    По поводу stdcall и вообще библиотек можно посмотреть исходники libs-dev.
  • Who is online

    Users browsing this forum: No registered users and 0 guests