//hDC为当前窗口的DC句柄//注意,下面创建DC,传入的参数是NULL
//如果下面的函数,采用hDC传入,是没问题
//==>问题就是为什么采用NULL传入之后,进行做的画,贴到hDC后,显示出来的居然还是黑色的,相当于空的??????
HDC hdcMem = CreateCompatibleDC(NULL);//蓝色刷子
HBRUSH hBrush = CreateSolidBrush(RGB(0, 0, 255));
RECT rect;
rect.left = 0;
rect.top = 0;
rect.right = bm.bmWidth;
rect.bottom = bm.bmHeight;
FillRect(hdcMem, &rect, hBrush);BitBlt(hDC,0,0,bm.bmWidth,bm.bmHeight,hdcMem,0,0,SRCCOPY);
  

解决方案 »

  1.   

    HDC hdcMem = CreateCompatibleDC(NULL);
    这是创建与屏幕兼容的DC
    创建内存DC后,你必须先为内存DC选入一副位图(CBitmap),否则DC没有底板啊。所以是黑的
      

  2.   

    对不起,我刚才给的代码中不全,应该是:
    //hDC为当前窗口的DC句柄//注意,下面创建DC,传入的参数是NULL
    //如果下面的函数,采用hDC传入,是没问题
    //==>问题1 :  就是为什么采用NULL传入之后,进行做的画,贴到hDC后,显示出来的居然还是黑色的,相当于空的??????
    HDC hdcMem = CreateCompatibleDC(NULL);//由于创建的第四个参数是1,因此只能显示二色图片,导致后面的蓝色刷子无用
    //问题2 就是:如果我希望创建这个位图上也能被刷上蓝色,那么创建的语句该如何写??
    hbmMem = CreateBitmap(100, 100, 1, 1, NULL);//蓝色刷子
    HBRUSH hBrush = CreateSolidBrush(RGB(0, 0, 255));
    RECT rect;
    rect.left = 0;
    rect.top = 0;
    rect.right = bm.bmWidth;
    rect.bottom = bm.bmHeight;
    FillRect(hdcMem, &rect, hBrush);BitBlt(hDC,0,0,bm.bmWidth,bm.bmHeight,hdcMem,0,0,SRCCOPY);再问,谢谢!
      

  3.   

    还是贴得不全,郁闷,想修改都不行。只好再贴一次:
      对不起,我刚才给的代码中不全,应该是:  
    //hDC为当前窗口的DC句柄  
     
    //注意,下面创建DC,传入的参数是NULL  
    //如果下面的函数,采用hDC传入,是没问题  
    //==  >问题1  :    就是为什么采用NULL传入之后,进行做的画,贴到hDC后,显示出来的居然还是黑色的,相当于空的??????  
    HDC  hdcMem  =  CreateCompatibleDC(NULL);  
     
    //由于创建的第四个参数是1,因此只能显示二色图片,导致后面的蓝色刷子无用  
    //问题2  就是:如果我希望创建这个位图上也能被刷上蓝色,那么创建的语句该如何写??  
    hbmMem  =  CreateBitmap(100,  100,  1,  1,  NULL);  
    HBITMAP hOldBmp = SelectObject(hdcMem, hbmMem); //蓝色刷子  
    HBRUSH  hBrush  =  CreateSolidBrush(RGB(0,  0,  255));  
    RECT  rect;  
    rect.left  =  0;  
    rect.top  =  0;  
    rect.right  =  bm.bmWidth;  
    rect.bottom  =  bm.bmHeight;  
    FillRect(hdcMem,  &rect,  hBrush);  
     
    BitBlt(hDC,0,0,bm.bmWidth,bm.bmHeight,hdcMem,0,0,SRCCOPY);  SelectObject(hdcMem, hOldBmp);
    .... 再问,谢谢!
      

  4.   

    用CreateCompatibleBitmap函数生成位图看行不行啊
      

  5.   

    如果是连256色图片都显示不了的话,给我email  
    [email protected]我给你一个很简单显示的程序!