这段程序哪里出错了

现在还是人类 2006-09-22 11:11:47
我想用vc写一个dll给vb调用,这个函数是图形处理用的,这个DLL已经可以成功编译,
但是却没有效果,不知道为什么?
_stdcall bb(HDC a,HDC b)
{
HDC ysdc;

ysdc=CreateCompatibleDC(0);
if(ysdc!=0)
{
void *ysbitmap=0;
void *ysobj=0;
ysbitmap=CreateBitmap(300,300,1,24,NULL);
if(ysbitmap!=0)
{
ysobj=SelectObject(ysdc,ysbitmap);
BitBlt(ysdc,0,0,300,300,b,0,0,SRCCOPY);
BitBlt(a,0,0,300,300,ysdc,0,0,SRCCOPY);
SelectObject(ysdc,ysobj);
DeleteObject(ysbitmap);
}
}
DeleteDC(ysdc);
}
...全文
108 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
w_anthony 2006-09-22
  • 打赏
  • 举报
回复
CreateBitmap好像是创建黑白的没问题,创建24位的经常不行,不知道为什么,你用CreateCompatibleBitmap试试!?
现在还是人类 2006-09-22
  • 打赏
  • 举报
回复
这是测试用的,但是用不了
菜牛 2006-09-22
  • 打赏
  • 举报
回复
貌似你把b拷贝到a中,为什么不直接:
BitBlt(a, 0, 0, 300, 300, b, 0, 0, SRCCOPY);
palmax 2006-09-22
  • 打赏
  • 举报
回复
vb和vc的数据类型不一样,需要转化
有没有检查过函数入口处的a和b的值?
现在还是人类 2006-09-22
  • 打赏
  • 举报
回复
谢谢。问题解决。
youngwolf 2006-09-22
  • 打赏
  • 举报
回复
GetDeviceCaps
NUMCOLORS
现在还是人类 2006-09-22
  • 打赏
  • 举报
回复
谢谢楼上的兄弟,我忘记了我的系统颜色设置成了16位的了,修改了系统颜色成24位后就可以了,但是这又引发了一个问题,如何知道当前系统的色彩位呢?请各位大虾帮帮忙。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧