我用采集卡的SDK在VC下编写自己的图像采集程序,遇到以下问题。
1、我把采集到的图像输出到单文档框架的客户区(我不知道这样表述对不对,不好意思,希望大家能看懂),显示图像正常,但是当窗口框架被拖动时,视频图像还是在原位置,并不随程序框架移动。这是为什么?我该如何做才能让程序向一个播放器一样可以挪动呢?
2、我的程序上的菜单必须在停止采集冻结图像时点击,打开的菜单项和对对应的话框才不会被视频图像挡住。和又是为什么?怎么解决??图像处理我已经搞定了,但是关于以上两个问题好像不是算法问题。我实在弄不懂MFC的相关问题。
我不是做计算机的,是第一次用VC编程序,完全是初学。一直在看MSDN和例子。学得很费劲。
这两个问题很菜,但我查了好多资料,没找到解决办法。谢谢大家看贴!!
1、我把采集到的图像输出到单文档框架的客户区(我不知道这样表述对不对,不好意思,希望大家能看懂),显示图像正常,但是当窗口框架被拖动时,视频图像还是在原位置,并不随程序框架移动。这是为什么?我该如何做才能让程序向一个播放器一样可以挪动呢?
2、我的程序上的菜单必须在停止采集冻结图像时点击,打开的菜单项和对对应的话框才不会被视频图像挡住。和又是为什么?怎么解决??图像处理我已经搞定了,但是关于以上两个问题好像不是算法问题。我实在弄不懂MFC的相关问题。
我不是做计算机的,是第一次用VC编程序,完全是初学。一直在看MSDN和例子。学得很费劲。
这两个问题很菜,但我查了好多资料,没找到解决办法。谢谢大家看贴!!
解决方案 »
- directx 显示图片,全速运行时黑屏?
- 如何格式化输出日期
- 内存申请和释放是不在同一个模块里,就不行吗?
- [讨论调查] 如果不是计算机专业毕业的,自学的,但是水平还是强的,那样子大公司有没有人要?
- DirechShow编程,怎样遍历IGraphBuilder中的Filter,然后释放Filter占用的资源??
- VC中如何用usbioctl.h提供的usb设备信息用createfile获取指定usb设备句柄
- CTreeCtrl中,SelectItem(hNew),出现错误提示"Unknown error 0x800a0bcd",是怎么回事?
- 如何在代码中改变BUTTON的位置?是哪个function?
- 怎样将一行文字按指定的角度斜着画出来
- 请问关于时间比较的问题
- socket 实现的 ftp 上传问题
- SDI启动时不加载视图??
2:这个像图层的问题,采集卡的SDK应该可以设置播放的层吧
惭愧啊!
采集卡的SDK没有提到播放的层的问题。
或者你就在例子程序中找,肯定能找到的。
然后在视频窗口的OnSize事件中GetClientRect之后设置视频表面位置 OnMove事件中SendMessage(WM_SIZE),若窗口大小是固定的,则只需在OnSize里处理视频表面位置即可
有可能是因为视频是DirectxShow出来的,而不是采用的GDI方式
视频表面处于整个屏幕的最上方
你试试看这个视频表面会不会把Windows任务管理器给挡住。
冻结图像时其实就是把视频表面图像存进了内存Bitmap画在了窗口上好像DirectxShow有个透明色什么的,视频表面可以穿过显示屏上透明色的区域,也许有Api可以设置一下
你看看Demo程序中在实时显示视频时,别的窗口能否挡住视频表面
有的采集卡可以设置成GDI方式显示视频,这样就不会发生这样的问题,不过视频效果要打折扣
视频表面处于整个屏幕的最上方
你试试看这个视频表面会不会把Windows任务管理器给挡住。”没错,挡住了。“Demo程序中在实时显示视频时,别的窗口能否挡住视频表面”是这样的!Demo程序中使用的
status = CGCapture(m_hcg, TRUE);
就这一句直接调用采集卡控制函数就完成了输出到屏幕工作。当然之前进行了:
CGSTATUS status = CG_OK;
CView *pView = NULL;
RECT rcCliet = {0};
RECT rcVideo = {0}; CGSetVideoFormat(m_hcg , m_VideoFormat);
//
pView = GetActiveView();
ASSERT(pView);
pView->GetClientRect(&rcCliet);
pView->ClientToScreen(&rcCliet);
rcVideo = rcCliet; ASSERT(pView);
CGSetScanMode(m_hcg,m_ScanMode);
CGSetInputWindow(m_hcg,
0,
0,
768,
576
);
// 设置视频输出窗口
CGSetOutputWindow(m_hcg,
rcVideo.left ,
rcVideo.top ,
768,
576
);
看现象适合你说的一样,设置成GDI方式显示视频了。
但我不明白是怎么做到的。我在查一下DirectxShow和GDI方式。呵呵,不懂,要学下!
谢谢你(dazedase)!
给分了!!!!