本帖最后由 nabasasun 于 2013-06-22 01:36:06 编辑

解决方案 »

  1.   

    //下面动作执行的时候都要更新窗口,没有看到你的翻转页面的代码
    case WM_MOVE:  break;
    case WM_SIZE:  break;
      

  2.   

    在paint下绘制是没有问题的。Present()执行了吗?,还要弄清楚窗口区域跟屏幕区域
        GetClientRect( s_hWnd, &s_rcClient );
        ClientToScreen( s_hWnd, (POINT*)&s_rcClient );
      

  3.   


    窗口又不是全屏,没有那个filp的写法
      

  4.   

     lpDDSPrimary->Blt(&rc1,lpDDSBJ,NULL,DDBLT_WAIT,NULL);                //背景
    注意第三个参数
      

  5.   

    找到问题了,不是窗口大小, 也不是第三个源矩形大小,而是这个转换函数的获取客户区,导致我全部图片都是背景图那么大 GetClientRect(hWnd,&rc); ClientToScreen(hWnd,(LPPOINT)&rc);
    ClientToScreen(hWnd,(LPPOINT)&rc + 1);
      

  6.   

    DDRAW  窗口模式 其实  是把画面 放到 客户区上的, 看起来像是 窗口模式, 有点欺骗大家。 因此  窗口模式时候,必须时刻 跟踪 窗口客户区坐标,吧这个RECT  做为全局变量。 然后窗口模式下只能BLT 图像。 此时要用检测的客户区RECT  来BLT 首先,你应该把客户区左上角坐标转换成 屏幕坐标,这个函数百度搜索下就可以了。那这个坐标是,不用想了,肯定是0,0.好把这个坐标转换成屏幕好了,你会说0,0 型吗,当然可以,因为此函数 关键是看 窗口句柄,这样就可以确定是哪个窗口位置了
    好,这些做完就可以确定客户区坐标了   你可能会说在调用转换函数,哦,不用了,有了左上角屏幕坐标,右下角也就有了,直接分别加上您设置的全局常量  分辨率就可以了。  可能你会说,分辨率是客户区大小吗。 恩,所以在创建完主窗口的时候,你需要重新改变窗口大小,让窗口客户区为真实的,自己需要的分辨率,否则 一开始创建的窗口整体的宽高才是你所设定的,客户区是小于所设定的,这样是不正确的。  这些函数你可以搜索下了。大致会用到 移动窗口函数, 会根据所需要的客户区 来创建窗口,并且您还能设置窗口位置,比如 显示在  正中间