помогите найти ошибку

Discussion in 'WASM.BEGINNERS' started by hakeem, Aug 22, 2008.

  1. hakeem

    hakeem New Member

    Blog Posts:
    0
    Code (Text):
    1. .386
    2. .model flat,stdcall
    3. option casemap:none
    4. include \masm32\include\windows.inc
    5. include \masm32\include\user32.inc
    6. include \masm32\include\kernel32.inc
    7. include \masm32\include\gdi32.inc
    8. includelib \masm32\lib\user32.lib
    9. includelib \masm32\lib\kernel32.lib
    10. includelib \masm32\lib\gdi32.lib
    11.  
    12. WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
    13. IDB_MAIN   equ 1
    14.  
    15. .data
    16. ClassName db "SimpleWin32ASMBitmapClass",0
    17. AppName  db "Win32ASM Simple Bitmap Example",0
    18.  
    19. .data?
    20. hInstance HINSTANCE ?
    21. CommandLine LPSTR ?
    22. hBitmap dd ?
    23. bmp dd ?
    24.  
    25. .code
    26. start:
    27.     invoke GetModuleHandle, NULL
    28.     mov    hInstance,eax
    29.     invoke GetCommandLine
    30.     mov    CommandLine,eax
    31.     invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
    32.                    invoke keybd_event,VK_SNAPSHOT,0,0,0 ;иммитируем нажатие клавиши print screen
    33.                    ; читаем из буфера
    34.                    invoke OpenClipboard, hInstance
    35.                    invoke GetClipboardData, CF_BITMAP
    36.                    ; в eax - указатель на буфер с данными
    37.                    mov bmp,eax,
    38.     invoke ExitProcess,eax
    39.  
    40. WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
    41.     LOCAL wc:WNDCLASSEX
    42.     LOCAL msg:MSG
    43.     LOCAL hwnd:HWND
    44.     mov   wc.cbSize,SIZEOF WNDCLASSEX
    45.     mov   wc.style, CS_HREDRAW or CS_VREDRAW
    46.     mov   wc.lpfnWndProc, OFFSET WndProc
    47.     mov   wc.cbClsExtra,NULL
    48.     mov   wc.cbWndExtra,NULL
    49.     push  hInstance
    50.     pop   wc.hInstance
    51.     mov   wc.hbrBackground,COLOR_WINDOW+1
    52.     mov   wc.lpszMenuName,NULL
    53.     mov   wc.lpszClassName,OFFSET ClassName
    54.     invoke LoadIcon,NULL,IDI_APPLICATION
    55.     mov   wc.hIcon,eax
    56.     mov   wc.hIconSm,eax
    57.     invoke LoadCursor,NULL,IDC_ARROW
    58.     mov   wc.hCursor,eax
    59.     invoke RegisterClassEx, addr wc
    60.     INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\
    61.            WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
    62.            CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\
    63.            hInst,NULL
    64.     mov   hwnd,eax
    65.     invoke ShowWindow, hwnd,SW_SHOWNORMAL
    66.     invoke UpdateWindow, hwnd
    67.     .while TRUE
    68.         invoke GetMessage, ADDR msg,NULL,0,0
    69.         .break .if (!eax)
    70.         invoke TranslateMessage, ADDR msg
    71.         invoke DispatchMessage, ADDR msg
    72.     .endw
    73.     mov     eax,msg.wParam
    74.     ret
    75. WinMain endp
    76.  
    77. WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    78.    LOCAL ps:PAINTSTRUCT
    79.    LOCAL hdc:HDC
    80.    LOCAL hMemDC:HDC
    81.    LOCAL rect:RECT
    82.    .if uMsg==WM_CREATE
    83.       invoke LoadBitmap,hInstance,ADDR bmp
    84.       mov hBitmap,eax
    85.    .elseif uMsg==WM_PAINT
    86.       invoke BeginPaint,hWnd,addr ps
    87.       mov hdc,eax
    88.       invoke CreateCompatibleDC,hdc
    89.       mov hMemDC,eax
    90.       invoke SelectObject,hMemDC,hBitmap
    91.       invoke GetClientRect,hWnd,addr rect
    92.       invoke BitBlt,hdc,0,0,rect.right,rect.bottom,hMemDC,0,0,SRCCOPY
    93.       invoke DeleteDC,hMemDC
    94.       invoke EndPaint,hWnd,addr ps
    95.     .elseif uMsg==WM_DESTROY
    96.       invoke DeleteObject,hBitmap
    97.         invoke PostQuitMessage,NULL
    98.     .ELSE
    99.         invoke DefWindowProc,hWnd,uMsg,wParam,lParam       
    100.         ret
    101.     .ENDIF
    102.     xor eax,eax
    103.     ret
    104. WndProc endp
    105. end start
    Компилятор выдает:

     
  2. l_inc

    l_inc New Member

    Blog Posts:
    0
    hakeem
    Строчка
    Code (Text):
    1. mov bmp,eax,
    , указанная компилятором, на мысли не наводит?
     
  3. hakeem

    hakeem New Member

    Blog Posts:
    0
    Что значит SNAPSHOT2.asm(37) : error A2008: syntax error ?
    Что за (37)?
     
  4. l_inc

    l_inc New Member

    Blog Posts:
    0
    hakeem
    В файле SNAPSHOT2.asm на строке 37 ошибка номер A2008. Номер соответствует синтаксической ошибке.
     
  5. hakeem

    hakeem New Member

    Blog Posts:
    0
    Оказываеться все на много проще...
    Спасибо l_inc
     
  6. 2FED

    2FED New Member

    Blog Posts:
    0
    hakeem В 2008 году появилась эта ошибка :lol:
     
  7. hakeem

    hakeem New Member

    Blog Posts:
    0
    2FED
    Я тебя не совсем понял
     
  8. patolog

    patolog New Member

    Blog Posts:
    0
  9. hakeem

    hakeem New Member

    Blog Posts:
    0
    patolog
    Да что за :lol: ?
     
  10. Aspire

    Aspire New Member

    Blog Posts:
    0
    hakeem
    Метка диска у тебя на компьютере...
    2FED
    Спасибо, поржал аж до слез )))
     
  11. 2FED

    2FED New Member

    Blog Posts:
    0
    hakeem

    [​IMG]
     
  12. hakeem

    hakeem New Member

    Blog Posts:
    0
    2FED
    Чё ...йнёй страдаешь?