忘了说了,这是我想模仿e-book动态翻页效果而写的东西,如果你不知道e-book是什么,可到eb.126.com去下载。

解决方案 »

  1.   

    大家不用到我的主页上下载了,我的主页改回去了,因为刚刚上载到csdn了,是http://263.csdn.net/FileBBS/files/2001_8/T_488_1.zip
      

  2.   

    你做的要比ebook好多了,帮你看看
      

  3.   

    toEA(电子艺界) 
    你无聊了还要来参活,只是无聊之至!你不回答问题以后少来!
    大家不用理会这个人,继续讨论吧!
      

  4.   

    我改了一下,Invalidate(FALSE);就不闪了
    字体改变应该可以了,在翻页之前先把字输出在页面上
    把要翻页的区域抓取到memdc里,接下来和你处理的一样就行了
      

  5.   

    谢谢少侠,但我在做的时候发现需要有两个内存memdc,因为仔细观察e-book发现旧的一页在慢慢收缩(即入你所说先抓到内存中然后拷贝),而新的一页也在渐渐展开,并且着新的一页也是包含文字的。所以得设两个memdc,一个保存当前区域的图像文字,另一个包含下一页图像和文字。可是我设两个memdc,总是一个起作用,一个不起作用,请问这是怎么回事?
      

  6.   

    另外,关于抓取当前窗口的图和文字到内存dcMem,我是这样做的:(假如当前窗口已经有图像和文字)
    CDC dcMem;
    HWND hwnd =::GetActiveWindow();
    HDC hdc = ::GetWindowDC(hwnd);  
    dcMem.Attach(hdc);
    dcMem.CreateCompatibleDC(&dc);//为了以后再拷回到当前窗口
    可是这样做就是不行,请问毛病出在哪里?
      

  7.   

    试试这个:
    void COpenPicDlg::CatchBitmap() 
    {
    CDC *pDC,memDC;
    HBITMAP    hBitmap;
    pDC=this->GetDC();
    hBitmap=CreateCompatibleBitmap (pDC->m_hDC,50,50);
    memDC.CreateCompatibleDC(pDC);
    memDC.SelectObject(hBitmap);
    memDC.BitBlt(0,0,50,50,pDC,0,0,SRCCOPY);
    pDC->BitBlt(50,50,50,50,&memDC,0,0,SRCCOPY);
    ReleaseDC(pDC);
    DeleteDC(memDC.m_hDC);
    DeleteObject(hBitmap);
    }