我正在制作一个将白色椭圆移动到窗口中心的程序。我正在使用 BeginPaint、EndPaint、Ellipse 程序执行此操作。当没有循环时,它可以正常工作,在底部显示椭圆,但是当我使用循环时,它会将椭圆移动到我需要的位置,然后停止响应(我想程序不会返回控制)。如何解决这个问题?我什至已经开始复制注册值。
WM_油漆:
invoke BeginPaint, hWnd, addr ps ;
mov hdc, eax ;
invoke GetClientRect, hWnd, addr rect; invoke DrawInitialElipse
invoke DrawInitialElipse
程序:
DrawInitialElipse proc
LOCAL tempEAL:BYTE
LOCAL tempEAX:DWORD
LOCAL tempEDX:DWORD
LOCAL tempECX:DWORD
mov tempEAL, al
mov tempEAX, eax
mov tempEDX, edx
mov tempECX, ecx
finit
fld initialColorStep
fld currentColorDouble
fadd
fst currentColorDouble
fistp dword ptr currentColorInt
mov al, byte ptr [currentColorInt]
mov tempColor, al
mov esi, currentInitialCirclePositionY
.WHILE (esi != ydiv2)
.if stepNumber1==0
mov edi, startY
mov currentInitialCirclePositionY, edi
.else
dec currentInitialCirclePositionY
.endif
inc stepNumber1
mov edi, currentInitialCirclePositionY
sub edi,cnst_10
mov topLeftY, edi
mov edi, startX
sub edi, cnst_5
mov topLeftX, edi
mov edi, currentInitialCirclePositionY
add edi, cnst_10
mov bottomRightY, edi
mov edi, startX
add edi, cnst_5
mov bottomRightX, edi
invoke CreateBrush, 240,240,240
mov initialBrush, edi
invoke SelectObject, hdc, initialBrush
invoke Ellipse, hdc, topLeftX,topLeftY,bottomRightX,bottomRightY; //рисуем другим перо
invoke Sleep, 10
.ENDW
mov al, tempEAL
mov eax,tempEAX
mov edx,tempEDX
mov ecx,tempECX
ret
DrawInitialElipse endp