старший бит слова есмь знак в представлении чисел со знаками. 00000000 - 00000001 = (1)1111111 т.е. (-1) кстати .. отрицательная область просмотра ... это как ?
да даж за пределами экрана (вернее окна) когда сие прогонял , в отрицательные значений не убегал никак. Код (Text): _shw_paint: mov scrlli.cbSize,sizeof SCROLLINFO mov scrlli.fMask,SIF_ALL mov scrlli.nMin,0 m2m scrlli.nMax,dib_show.x_dib m2m scrlli.nPage,dib_show.pixels2cient_x m2m scrlli.nPos,dib_show.x_pozition neg scrlli.nPos invoke SetScrollInfo,hShw,SB_HORZ,offset scrlli,1 m2m scrlli.nMax,dib_show.y_dib m2m scrlli.nPage,dib_show.pixels2cient_y m2m scrlli.nPos,dib_show.y_pozition neg scrlli.nPos invoke SetScrollInfo,hShw,SB_VERT,offset scrlli,1 invoke BeginPaint,hShw,addr ps mov hdc,eax invoke SetStretchBltMode,hdc,COLORONCOLOR invoke SetMapMode,hdc,MM_ISOTROPIC invoke SetWindowExtEx,hdc,dib_show.x_dib,dib_show.y_dib,0 mov eax,dib_show.y_dib mul dib_show.dib2client sar eax,16 mov ecx,eax mov eax,dib_show.x_dib mul dib_show.dib2client sar eax,16 invoke SetViewportExtEx,hdc,eax,ecx,0 invoke StretchDIBits, hdc,dib_show.x_pozition,dib_show.y_pozition,\ dib_show.x_dib,dib_show.y_dib,0,0,\ dib_show.x_dib,dib_show.y_dib,dib_show.lpScreen,\ dib_show.lpBmI, DIB_RGB_COLORS, SRCCOPY invoke EndPaint,hShw,addr ps xor eax,eax ret это дробь (сдвинули на 16) отношения размеров выводимого изображения в окно к реальным размерам картинки. сии значения исключительно в беззнаковом представлении. положение "за пределами" задавал банальным скролингом.
да, a masm32 при передачи переменной со знаком минус, пишет что третий аргумент пропущен... если я правильно перевёл слово mismatch...
ну да верно значение переменной, так как это сделать? просто число к примеру -500 без проблем, а вот перемунную не получается...
а переменную Код (Text): mov ebx, [переменная] neg ebx invoke SetViewportExtEx, hdcPrint, xx, EBX, NULL по-моему, логично? Макрос не примет (-YExt) в качестве параметра.