滚动视中LPtoDP失败 问:在WINDOWS98/95中,当你给光标指针位置大于32767或者小于-21768函数 CDC::LPtoDP 将失败,程序工作在NT上但在95/98中用滚动视工作时却出现了问题. LPtoDP是在下面函数中被调用的: SetScrollSizes(MM_HIMETRIC, sizeTotal); 函数是在CScrollView中调用的.我使用的是HIMETRIC映射方式,在我想将A4扩大 150%时 这个问题就会出现。怎样才能解决这个问题? 答:1)在95中确实存在这样的问题,95中的GDI不是32位的.当我们开发一个程序有 编辑 矢量图象时手动而不是由LPtoDP()函数来完成转换.(在NT中也存在同样的问题) 2)简言之,CScrollView或CWnd之所以32位参数会失败是因为95/98并不是真正的 32 位操作系统,里面仍然包含16位代码.比如Scrollbars还是只接受16位的值来调 整范围. NT是一个真正的32位操作系统,就没有这些困惑. 在95中不得不面对类似的滚动大文档的问题时,我们只能另外写些代码来实现滚 动的 实际位置,当它超出-32K或+32K时,你也必须在你的应用中做些映射. 作为一个有关的注意点(可能你已经碰上过这个问题)如果在MFC处理滚动消息时 ,如: void CSomeWnd::OnVScroll (UINT nSBCode,UINT nPos, CScrollBar *pscrollBar) 中的 nPos参数只有16位长.克服这个限制可以使用SCROOLINFO结构 运行::GetScrollInfo.SCROLLINFO 结构中的nTrackPos是一个真正的32位。