vtg
Сообщений: 118
Оценки: 0
Присоединился: 2007-05-19 03:47:20.353333
|
Пытаюсь переделать функцию BmpButton (masm32) так, чтобы при наведении курсора на кнопку менялась картинка и наоборот. К процедуре кнопки добавил .elseif uMsg == WM_MOUSEMOVE mov eax,lParam cwdemov ptX,eax mov eax,lParam rol eax,16 cwde mov ptY,eax invoke GetWindowRect,hWin,ADDR Rct mov eax, Rct.right mov edx, Rct.left sub eax, edx mov bWid, eax mov eax, Rct.bottom mov edx, Rct.top sub eax, edx mov edx,bWid .if ptX<0 || ptX>edx || ptY<0 || ptY>eax ; <– Warning mov btnflag,0 invoke ReleaseCapture invoke GetWindowLong,hWin,0 mov hBmpU, eax invoke GetWindowLong,hWin,8 mov hImage, eax invoke SendMessage,hImage,STM_SETIMAGE,IMAGE_BITMAP,hBmpU .elseif btnflag!=1 mov btnflag,1 invoke SetCapture,hWin invoke GetWindowLong,hWin,4 mov hBmpD, eax invoke GetWindowLong,hWin,8 mov hImage, eax invoke SendMessage,hImage,STM_SETIMAGE,IMAGE_BITMAP,hBmpD .endif На одном из окон проги имеется SysListView32 c CHECKBOXES invoke CreateWindowEx, WS_EX_CLIENTEDGE,addr ListViewClass, NULL, WS_CHILD or WS_VISIBLE or LVS_REPORT or LVS_SHAREIMAGELISTS, 75,40,350,250, hWnd, NULL, hInstance, NULL mov hList, eax invoke SendMessage,hList,LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_CHECKBOXES mov lvc.imask,LVCF_TEXT+LVCF_WIDTH mov lvc.pszText,offset Heading1 mov lvc.lx,300 invoke SendMessage,hList,LVM_INSERTCOLUMN,0,addr lvc mov lvs.imask,LVIF_TEXT or LVIF_STATE mov lvs.state,8192 mov lvs.stateMask,LVIS_STATEIMAGEMASK mov lvs.pszText,OFFSET CHECKBOXE1 mov lvs.iItem,0 invoke SendMessage,hList,LVM_INSERTITEM,0,ADDR lvs . . . mov lvs.pszText,OFFSET CHECKBOXEN mov lvs.iItem,1 invoke SendMessage,hList,LVM_INSERTITEM,0,ADDR lvs и моя кнопка. Без кнопки всё нормально. При добавлении кнопки исчезают итемы в SysListView32. Опыты показали, что проблема в строке .if ptX<0 || ptX>edx || ptY<0 || ptY>eax ; <– Warning Если, например, написать .if ptX<0 || ptX>eax || ptY<0 || ptY>eax то итемы появляются. Что за хрень! Есть идеи? Других проблем с кнопкой нет.
|