最近做毕业设计,选的是VS2005和WIN2003SP1。毕设是做CAD设计这块的,因为以前没怎么做过,现在就直接找些类。搞到一半的时候,被一个超级S的问题给耽搁了半个月。就是这个POINT在2003中存储的问题。
因为以前存储的都是用LONG存的,VS2005也是按LONG存储,但读取的时候却是按DOUBLE读取,一个是16位,一个是32位,读出的东西真是乱七八糟。
问题在OnMouseMove(UINT nFlags, CPoint point)里。这个POINT出来的东西point.y我是想把他存到一个DOUBLE类型的数中,结果老是读错。我一开始以为是浮点数是不能随便赋值的,就换了很多的函数,结果还是读取错误的数据。
半个月,真TM搞笑,我都不想写了。写个解决办法吧,也算警告自己一下。
_asm
{
push eax
push edx
mov eax,buf
sub eax,4
mov edx,[eax]
mov myPntRY,edx
pop eax
pop edx
}
buf=((&(point.x))+1);
_asm
{
push eax
push edx
mov eax,buf
sub eax,4
mov edx,[eax]
mov myPntY,edx
pop eax
pop edx
}
哈哈,也真TM昏