invoke SetViewportExtEx, hdcPrint, xx, -yy, NULL в третьем арг. ошибк

Тема в разделе "WASM.WIN32", создана пользователем hellobody, 3 июн 2008.

  1. hellobody

    hellobody New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2008
    Сообщения:
    48
    Добрый вечер! Подскажите плиз, как передать в качестве аргумента отрицательное число?
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    так и передавать -xx.
    у меня нет ошибок, например...
     
  3. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Имелось в виду наверное передача значения переменной. И это блин в WIN32 разделе
     
  4. jhons

    jhons New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2007
    Сообщения:
    26
    старший бит слова есмь знак в представлении чисел со знаками.
    00000000 - 00000001 = (1)1111111 т.е. (-1)
    кстати .. отрицательная область просмотра ... это как ?
     
  5. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    jhons
    Наверное, за приделами экрана
     
  6. jhons

    jhons New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2007
    Сообщения:
    26
    да даж за пределами экрана (вернее окна) когда сие прогонял , в отрицательные значений не убегал никак.
    Код (Text):
    1. _shw_paint:     mov scrlli.cbSize,sizeof SCROLLINFO
    2.             mov scrlli.fMask,SIF_ALL
    3.             mov scrlli.nMin,0
    4.             m2m scrlli.nMax,dib_show.x_dib
    5.             m2m scrlli.nPage,dib_show.pixels2cient_x
    6.             m2m scrlli.nPos,dib_show.x_pozition
    7.             neg scrlli.nPos
    8.             invoke  SetScrollInfo,hShw,SB_HORZ,offset scrlli,1
    9.             m2m scrlli.nMax,dib_show.y_dib
    10.             m2m scrlli.nPage,dib_show.pixels2cient_y
    11.             m2m scrlli.nPos,dib_show.y_pozition
    12.             neg scrlli.nPos
    13.             invoke  SetScrollInfo,hShw,SB_VERT,offset scrlli,1
    14.             invoke  BeginPaint,hShw,addr ps
    15.             mov hdc,eax
    16.             invoke  SetStretchBltMode,hdc,COLORONCOLOR
    17.             invoke  SetMapMode,hdc,MM_ISOTROPIC
    18.             invoke  SetWindowExtEx,hdc,dib_show.x_dib,dib_show.y_dib,0
    19.             mov eax,dib_show.y_dib
    20.             mul dib_show.dib2client
    21.             sar eax,16
    22.             mov ecx,eax
    23.             mov eax,dib_show.x_dib
    24.             mul dib_show.dib2client
    25.             sar eax,16
    26.             invoke  SetViewportExtEx,hdc,eax,ecx,0
    27.             invoke  StretchDIBits, hdc,dib_show.x_pozition,dib_show.y_pozition,\
    28.                 dib_show.x_dib,dib_show.y_dib,0,0,\
    29.                 dib_show.x_dib,dib_show.y_dib,dib_show.lpScreen,\
    30.                 dib_show.lpBmI, DIB_RGB_COLORS, SRCCOPY
    31.             invoke  EndPaint,hShw,addr ps
    32.             xor eax,eax
    33.             ret
    это дробь (сдвинули на 16) отношения размеров выводимого изображения в окно к реальным размерам картинки. сии значения исключительно в беззнаковом представлении. положение "за пределами" задавал банальным скролингом.
     
  7. jhons

    jhons New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2007
    Сообщения:
    26
    хм ... какой интересный у тебя компилятор. где скачал ?
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    http://www.flatassembler.net/
     
  9. hellobody

    hellobody New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2008
    Сообщения:
    48
    да, a masm32 при передачи переменной со знаком минус, пишет что третий аргумент пропущен... если я правильно перевёл слово mismatch...
     
  10. hellobody

    hellobody New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2008
    Сообщения:
    48
    ну да верно значение переменной, так как это сделать? просто число к примеру -500 без проблем, а вот перемунную не получается...
     
  11. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    а переменную
    Код (Text):
    1. mov ebx, [переменная]
    2. neg ebx
    3. invoke SetViewportExtEx, hdcPrint, xx, EBX, NULL
    по-моему, логично? Макрос не примет (-YExt) в качестве параметра.
     
  12. hellobody

    hellobody New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2008
    Сообщения:
    48
    спасибо, не знал что есть оператор neg... так работает...
     
  13. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    И это блин в WIN32 разделе (C) KeSqueer
     
  14. jhons

    jhons New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2007
    Сообщения:
    26
    да нет ... просто справочник по командам семейства х86, вроде.