在XP下,用如下语句加载一个24位色,大小为1.8MB的bmp文件。
HBITMAP m_bmpBmp = (HBITMAP)LoadImage(0, szFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
用任务管理器查看,加载前后,内存增量只有100K左右,IO也基本没有变化。系统把那1.8M的位图数据放哪儿了呢?怎么读取的呢?百思不得其解,请各位指教。

解决方案 »

  1.   

    我原也是这么想,可是用以下代码验证,结果内存和IO也没涨。HDC deskDC = GetWindowDC(GetDesktopWindow());
    HDC memDC = CreateCompatibleDC(deskDC);
    HBITMAP oldBmp = (HBITMAP)SelectObject(memDC, m_bmpBmp);
    long lRet = StretchBlt(deskDC, 0, 0, 100, 100, memDC, 600, 800, 100, 100, SRCCOPY);
      

  2.   

    这应该和内存管理有关,据我所知,Windows在装入EXE文件时,也不是将EXE文件放入内存,而是将这个EXE文件映射成一个内存映像文件,你的这个问题应该和它是一样的。