在函数 ABC(long pImage)中调用Bitblt,其中Bitblt的第五个参数CDC* pSrcDC想用到pImage数据,该怎么实现?请高手赐教
   个人认为是不是先要把pImage转换成指针型,该如何转换?

解决方案 »

  1.   

    long pImage只是一个变量,占4个字节,不是数组啊
      

  2.   

    那也应该这么定义呀。ABC(long* pImage)
      

  3.   

    变量类型不是可以随便转换的,这也算C的一个弊病。不是什么东西用CDC*强制转换就能当CDC*用的。你的问题是将这块数据当作位图来用,但是没有位图头,因此需要自己构建一个位图头,然后用SetDIBSection绘制,或者用CreateDIBSection创建一个位图。
      

  4.   

    自己写个强制转化过程嘛.  如果你确定你传来的数据符合CDC的格式规范.
      

  5.   

    那你可以省略这一步,下面不就一样了?建议你看看我说的SetDIBSection和CreateDIBSection。
      

  6.   

    LZ的问题真是奇怪,pImage是什么类型的位图结构?多少位色的?多少长宽的?这些东西不知道的话,怎么画?如果这些东西知道了的话,不用文件头,可以是可以,就是SetPixel()了,不过也一样要先创建一个缓冲CDC和HBITMAP,再SetPixel()上去,这效率也太低了吧?考虑效率问题,还是自己填一个文件头,用CreateDIBSection来创建一个HBITMAP,然后创建一个CDC,用SelectObject把HBITMAP选进去,这样才能得到你要的BitBlt的参数。
      

  7.   

    难道LZ的pImage里面存的就是完整的一个BMP文件的数据?二维数组误导人啊。
    如果是一个完整的BMP文件,建议到网上搜搜“显示 BMP VC”,相信很容易找到源代码。
      

  8.   

    如果你的pImage直接保存到文件就已经是一个可用的BMP文件的话,还是建议你CreateDIBSection,其中需要的信息头参数,你直接用指针指到pImage对应的位置好了,不用另建了。