一点疑问:
…… 
   hBmpStc = CreateCompatibleBitmap (hdcStc,
            bitmap.bmWidth / 4, bitmap.bmHeight / 4) ;    SendDlgItemMessage (hwnd, 4 * i + j,
                        STM_SETIMAGE, 
                        (WPARAM) IMAGE_BITMAP,
                        (WPRAM) hBitmap) ;
                                ^^^^^^^这里有问题吧?    DeleteObject (hBmpStc);
……

解决方案 »

  1.   

    没有问题,那是粘贴代码时的错误。大哥救我,如何把一个图像的一部分矩形区域复制到hdc中去呢???
      

  2.   

    我猜一下:
        是不是类型转换的问题?
        int b = 10;
        int a = b/3;结果
       a=0;
    恐怕不是这样,
    如果真的不是这样的话,那么第一设置断点查看StrechBlt的参数值,第二用Bitblt换用看是否情况依然存在。
      

  3.   

    我来debug看看,Bitblt没有用的,我试过了。
      

  4.   

    关注...
      我也想实现一个同样的问题,怎么能将大图分成小块图,我想能不能从大图中提出小图的数据,即重新获得小块位图的数据.
      记得在c里有获得一定区域内容的函数,有填充一块区域的函数.在mfc的关于bitmap的类里有吗?
      

  5.   

    to Gonglv:
    我不明白,这有什么关系。
    肯定是传值时有无效传值,但是我现在搞不清楚
      

  6.   

    to Gonglv:
    我不明白,这有什么关系。
    肯定是传值时有无效传值,但是我现在搞不清楚
      

  7.   

    请把下面这句改一下:
    SendDlgItemMessage (hwnd,4 * i + j,STM_SETIMAGE,(WPARAM) IMAGE_BITMAP,       (WPARAM) hBitmap) ;最后一个参数改为hBmpStc   ——你没有发现你的这个位图创建后没有用过吗?另我觉得下面这句话也要改动
    hBmpStc = CreateCompatibleBitmap (hdcStc,
                bitmap.bmWidth / 4, bitmap.bmHeight / 4) ;
    第一个参数改为hdc——否则你可能看不到你想要的结果。另外你可以把它放到for循环之前,而没有必要放要循环里面。
      

  8.   

    最后的参数就是hBmpStc,是因为粘贴的时候格式错误,修改时不小心贴错了。hBmpStc = CreateCompatibleBitmap (....)
    的参数hdcStc改为hdc后结果还是不对啊,并且我也不明白你改的原因,能不能说的详细些???我快疯了,一个看似简单的问题我搞了整整两天还没有搞定,大虾们救命......
      

  9.   

    最后的参数就是hBmpStc,是因为粘贴的时候格式错误,修改时不小心贴错了。hBmpStc = CreateCompatibleBitmap (....)
    的参数hdcStc改为hdc后结果还是不对啊,并且我也不明白你改的原因,能不能说的详细些???我快疯了,一个看似简单的问题我搞了整整两天还没有搞定,大虾们救命......
      

  10.   

    //input:CDC * pDC,CBitmap * bmpsrc;
             //bmpsrc的尺寸是(160,160);
             CDC dcmem,dcstc;
    dcmem.CreateCompatibleDC(pDC);
    dcstc.CreateCompatibleDC(pDC);
    CBitmap bmpdes;
    bmpdes.CreateCompatibleBitmap(pDC,40,40);
    dcmem.SelectObject(bmpsrc);
    for (int i = 0;i < 4;i++)
    {
    for (int ii = 0;ii < 4;ii++)
    {
    CBitmap * poldbmp = dcstc.SelectObject(&bmpdes);
    dcstc.BitBlt(0,0,40,40,&dcmem,40 * i,
                                            40 * ii,SRCCOPY);
    dcstc.SelectObject(poldbmp);
    SendDlgItemMessage(4*i+ii,STM_SETIMAGE,
                                                  (WPARAM)IMAGE_BITMAP,
                                                  (LPARAM)bmpdes.m_hObject);
    }
    }
    抱歉,没用SDK,不过意思都差不多。
      

  11.   

    在我的软件发布里做了一个程序,用到了 从一张大图片里切若干个小图片。在这里:   
    http://www.csdn.net/cnshare/soft/soft5999.shtm
      

  12.   

    在我的软件发布里做了一个程序,用到了 从一张大图片里切若干个小图片。在这里:   
    http://www.csdn.net/cnshare/soft/soft5999.shtm
    代源码
      

  13.   

    谢谢大家,我今天中午好像找到了问题所在,不过还有一点以前搞错了,就是每一个Static控件都要分配一个HBITMAP对象才行,否则所有的Static就都显示同样的图片。
    不知道楼上的大虾们试过这段代码没有,否则应该发现啊。
    等我完全搞定,就给大家分数,分数少了点,不过谁让我是菜鸟呢!!!!
      @_@
      

  14.   

    今天刚刚搞定,原因吗还是自己刚刚接触SDK图像编程,所以一些地方搞不懂,搞定以后才发现其实就是语句的顺序问题。说老实话,虽然搞定了,不过真正还有很多不明白的。希望大虾们以后也能多多帮我。这次分数少了点,请不要介意。另外,除了Charles Petzold的《Windows程序设计》一书,还有哪本书讲解图像编程比较好,麻烦大虾们告诉我,最好是SDK的。
    可以到 id = 82253 去解答,我还会给分啊!!!
      

  15.   

    今天刚刚搞定,原因吗还是自己刚刚接触SDK图像编程,所以一些地方搞不懂,搞定以后才发现其实就是语句的顺序问题。说老实话,虽然搞定了,不过真正还有很多不明白的。希望大虾们以后也能多多帮我。这次分数少了点,请不要介意。另外,除了Charles Petzold的《Windows程序设计》一书,还有哪本书讲解图像编程比较好,麻烦大虾们告诉我,最好是SDK的。
    可以到 id = 82253 去解答,我还会给分啊!!! 
      

  16.   

    你如果认真看了我WannaPlayDIB的代码,你应该会找到很好的办法
      

  17.   

    你不能先用StretchBlt往DC里边添东西,再创建hBmpStc,对于MemoryDC,你必须先创建相应的Bitmap,然后用SelectObject把它放到相应的MemoryDC中,然后在往DC里边添东西.然后再干别的。那个MFC的示例就是这么干的。
      

  18.   

    to zyf_1977:
    可以的,我已经试验成功了.