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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2012, 21:06   #1
rolex123
 
Регистрация: 21.11.2010
Сообщений: 3
По умолчанию Расставить комментарии (fasm)

Здравствуйте, нарыл в интернете один интересный исходник и с толкнулся с проблемами в работе, так-как фасм еще не знаю, буду благодарен если кто-то закоментит код.

Код:
format PE GUI 4.0
entry codestart
 
include 'win32a.inc'
 
  IDD_MAIN                     =  100
  WM_CAP_DRIVER_CONNECT        =  WM_USER + 10
  WM_CAP_DRIVER_DISCONNECT     =  WM_USER + 11
  WM_CAP_FILE_SAVEDIB          =  WM_USER + 25
  WM_CAP_SET_PREVIEW           =  WM_USER + 50
  WM_CAP_SET_PREVIEWRATE       =  WM_USER + 52
  WM_CAP_SET_SCALE             =  WM_USER + 53
  ID_START                     =  201
  ID_STOP                      =  202
  ID_CLICK                     =  203
  _camtitle                    db 'FASMWEBCAM'
 
  _filename  db 'IMAGE.BMP'    ; Filename
  nDevice    dd   0            ; Device Number -> It can range from 0 through 9
  nFPS       dd 100            ; Frames per second. Must be 1000/FPS. E.g. 20 FPS = 50
 
section '.data' data readable writeable
  hInstance     dd ?
  hWebcam       dd ?
 
section '.code' code readable executable
  codestart:
    invoke  GetModuleHandle, 0
    mov     [hInstance], eax
    invoke  DialogBoxParam, eax, IDD_MAIN, HWND_DESKTOP, MainDlg, 0
    invoke  ExitProcess, 0
 
  proc MainDlg hdlg, msg, wparam, lparam
    push    ebx esi edi
    cmp     [msg], WM_INITDIALOG
    je      .wminitdlg
    cmp     [msg], WM_COMMAND
    je      .wmcommand
    cmp     [msg], WM_CLOSE
    je      .wmclose
    xor     eax, eax
    jmp     .finish
    .wminitdlg:
      invoke  capCreateCaptureWindow, _camtitle, WS_VISIBLE + WS_CHILD, 10, 10,\
                                        266, 252, [hdlg], 0
      mov     [hWebcam], eax
      jmp     .finish
    .wmcommand:
      cmp     [wparam], BN_CLICKED shl 16 + ID_START
      je      .startbutton
      cmp     [wparam], BN_CLICKED shl 16 + ID_STOP
      je      .stopbutton
      cmp     [wparam], BN_CLICKED shl 16 + ID_CLICK
      je      .clickbutton
    .wmclose:
      invoke  SendMessage, [hWebcam], WM_CAP_DRIVER_DISCONNECT, _camtitle, 0
      invoke  EndDialog, [hdlg], 0
    .finish:
      pop     edi esi ebx
      ret
    .startbutton:
      invoke  SendMessage,  [hWebcam], WM_CAP_DRIVER_CONNECT, [nDevice], 0
      invoke  SendMessage,  [hWebcam], WM_CAP_SET_SCALE, TRUE, 0
      invoke  SendMessage,  [hWebcam], WM_CAP_SET_PREVIEWRATE, [nFPS], 0
      invoke  SendMessage,  [hWebcam], WM_CAP_SET_PREVIEW, TRUE, 0
      jmp     .finish
    .stopbutton:
      invoke  SendMessage, [hWebcam], WM_CAP_DRIVER_DISCONNECT, _camtitle, 0
      jmp     .finish
    .clickbutton:
      invoke  SendMessage, [hWebcam], WM_CAP_FILE_SAVEDIB, 0, _filename
      jmp     .finish
  endp
 
section '.idata' import data readable writeable
 
  library kernel, 'KERNEL32.DLL',\
          user,   'USER32.DLL',\
          avicap, 'AVICAP32.DLL'
 
  import  kernel,\
          GetModuleHandle,'GetModuleHandleA',\
          ExitProcess,    'ExitProcess'
 
  import  user,\
          DialogBoxParam, 'DialogBoxParamA',\
          EndDialog,      'EndDialog',\
          SendMessage,    'SendMessageA'
 
  import  avicap,\
          capCreateCaptureWindow, 'capCreateCaptureWindowA'
 
section '.rsrc' resource data readable
  directory     RT_DIALOG, dialogs
  resource      dialogs,\
                IDD_MAIN, LANG_ENGLISH + SUBLANG_DEFAULT, main_dialog
  dialog        main_dialog, 'FASM Webcam', 0, 0, 190, 200, WS_CAPTION + WS_POPUP + WS_SYSMENU +\
                                                            DS_MODALFRAME + DS_CENTER
                dialogitem 'BUTTON', 'START', ID_START,  10, 170, 50, 20, WS_VISIBLE + WS_TABSTOP
                dialogitem 'BUTTON', 'STOP',  ID_STOP,   70, 170, 50, 20, WS_VISIBLE + WS_TABSTOP
                dialogitem 'BUTTON', 'CLICK', ID_CLICK, 130, 170, 50, 20, WS_VISIBLE + WS_TABSTOP
  enddialog

Последний раз редактировалось Stilet; 06.05.2012 в 21:10.
rolex123 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем отличаеться fasm от fasm editor&? TotKtoNado Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 07.11.2011 17:00
Расставить шахматы на доску Uki Общие вопросы C/C++ 2 26.09.2011 09:10
Расставить даты по таблице hunter-330 Microsoft Office Access 2 25.10.2010 12:05
Расставить комментарии bookkc Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 16.09.2010 10:00
Расставить пробелы dukesoteg Помощь студентам 0 10.06.2010 18:30