dx 中的 坐标定位不准的问题
最近使用dxgui遇到一个非常奇怪的问题:当鼠标移动到按钮的下方的时候,按钮就处于选中的状态。调试的时候,发现,屏幕坐标和鼠标定位的坐标不一致,主要是Y坐标不一致。鼠标定位的Y值比屏幕定位的Y值大将近10px。
后来经过修改,调试,把获取IDirect3DDevice9的方法修改了,解决了问题。
原来,在配置D3DPRESENT_PARAMETERS参数的时候,我把BackBufferWidth属性和BackBufferHeight的值设置成hWnd窗体的宽度和高度了。因为窗体是包含标题栏的,所以导致窗体的client area小于后缓存区的高度(正常应该是一样的值),查看dx api,发现当程序是非全屏模式的时候,BackBufferWidth和BackBufferHeight设置成0(或不设置),就默认取client area的大小了。