一个窗口模式的游戏
ddrval=lpDD->SetCooperativeLevel(hwnd,DDSCL_NORMAL);
为什么用Blt或者BltFast把表面绘上去时
坐标(0,0)对应是屏幕左上角,而不是窗口客户区的左上角?
DirectDraw本来就是这样,还是因为我没有把客户区与DirectDraw相对应?

解决方案 »

  1.   

    try
    HRESULT SetHWnd(DWORD dwFlasgs,HWND hWnd);
      

  2.   

    try
    HRESULT SetHWnd(
    DWORD dwFlags, 
    HWND hWnd); 
      

  3.   

    SetHWnd()
    是将一个窗口的客户区与裁剪表关联上。
    大侠,还有别的办法吗?
      

  4.   

    窗口模式就是这样的,你应该相应wm_move消息,保存客户区位置,这样做blt时才不会出问题。
    同时你应该在wm_moving里面防止用户把窗口的某部分移到屏幕外,否则blt操作会失败。clipper只是防止你绘图到客户区外,不会影响坐标的计算