Создание программ на masm 32

Тема в разделе "WASM.BEGINNERS", создана пользователем Ulv, 22 окт 2007.

  1. Ulv

    Ulv New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    55
    Вот хочу сделать простенькую программу, используя ресурсы типа два поля Edit и одна кнопка Button, только как создать такую программу на масме? ресурсы сделал в WinAsm, а потом что делать?
    Смысл проги:
    Прога должна прочесть строку из первого Edit и вывести во второй Edit2 при нажатии на кнопку.
    Вот что получилось, только не работает:
    .486
    .model flat, stdcall
    include C:\masm32\bin\base.rc
    include C:\masm32\bin\include\windows.inc
    includelib C:\masm32\bin\lib\user32.lib
    includelib C:\masm32\bin\lib\kernel32.lib
    .data
    hInstance dw 0
    buf1 dw 30 dup (0)
    .code
    start:
    invoke GetModuleHandle, NULL
    mov hInstance, eax
    invoke DialogBoxParam, hInstance, 101, 0, ADDR DlgProc, 0
    invoke GetWindowTextA, 1001, addr buf1, 10
    invoke WriteComm, 1002, addr buf1, 10
    invoke ExitProcess, eax
    ; -----------------------------------------------------------------------
    DlgProc proc hWin :lol: WORD,
    uMsg :lol: WORD,
    wParam :lol: WORD,
    lParam :lol: WORD

    .if uMsg == WM_COMMAND
    .if wParam == IDC_OK
    ; -----------------------------------------------------------------------
    ; TODO
    ; -----------------------------------------------------------------------
    .elseif wParam == IDC_IDCANCEL
    invoke EndDialog,hWin,0
    .endif
    .elseif uMsg == WM_CLOSE
    invoke EndDialog,hWin,0
    .endif

    xor eax,eax
    ret
    DlgProc endp

    end start
     
  2. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Это должно быть внутри DlgProc, в том месте, где написано TODO :). Надеюсь также, что WriteComm - это какая-то процедура, нормально отлаженная и где-то присутствующая? (не припомню такой АПИ).

    Я бы написал даже так:

    invoke GetDlgItemTextA, hWin, 1001, addr buf1, 30

    invoke SetDlgItemTextA, hWin, 1002, addr buf1
     
  3. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
  4. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Ulv
    Потом надо убрать вот эту странную строку
    вместо нее взять компилер ресурсов, который находится у тебя в папке Bin MASM'а и называется - RC.EXE - Microsoft Windows Resource Compiler, там для него и справка есть, но почему то написано, что он для Windows NT и написать в коммандной строке так - rc.exe /v base.rc, в текущей папке появится файл base.res, иначе появится кучу ошибок. Его надо передать в командной строке линкеру вместе с объектный файлом и другими параметрами линковки. Еще можно заюзать тулзу cvtres оттуда же и превратить этот файл ресурсов в объектный файл, хотя не знаю зачем она нужна может в целях какой-то хитрой совместимости. Ну мне линкера хватает, чтобы передать res файл. А потом написать код, который сказал FatMoon.
     
  5. Ulv

    Ulv New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    55
    эээ спсибо, вроде разобрался немного.
    Подскажите в какой программе лучше всего создавать ресурсы?
     
  6. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Ulv
    Ну например Microsoft Visual Studio
     
  7. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    нееее Есть прога класная ))) как раз из пакета ассемблерного не помню название ..эмммм короче ищи в инструментах билдеры ресурсов ...там вроде была она ты ее сразу узнаешь так как в ней оч много компорнентов
     
  8. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    ResEd
     
  9. God_Father

    God_Father New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2007
    Сообщения:
    99
    Для начала может и MasmBuilder подойти
    По нему я и узнал основы ассемблера, хоть он немного и недоработанный
    зайди на http://mbuilder.jino-net.ru/
    не пожалеешь
     
  10. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    1.52 ловчее, мне кажется.
    1.62 задумчивый какой-то , хотел немного его улучшить - слетели иконки асм-файлов и никак их не вернуть, переустановка не помогла :dntknw:
    Для мазохистов можно порекомендовать Radasm ...
     
  11. God_Father

    God_Father New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2007
    Сообщения:
    99
    Начет MasmBuilderа автор переписывает движок
    так что надеюсь в следующей версии глюков не будет