为什么同一行代码在win7 32位和XP系统执行的不一样呢?
有条指令if (!m_Player.OpenWdm(0, 640, 480))调用一个类的OpenWdm()函数,这个函数的部分代码如下:
BOOL CPlayer::OpenWdm(int nIndex, int nWidth, int nHeight)
{
Close();
Capture_S cap = {0};
cap.nCaptureType = XCAP_TYPE_WDM;
cap.WdmCap.nChannel = nIndex;
cap.WdmCap.nCapWidth = nWidth;
cap.WdmCap.nCapHeight = nHeight;
if (CXCapture::XCreateCapture(cap, &m_pXCapture))
·······
}
在if()语句设置一个断点,发现win7和XP系统传递参数一样,通过监控可以发现win7系统下:cap.WdmCap.nChannel = 0;cap.WdmCap.nCapWidth = 0;cap.WdmCap.nCapHeight = 0。而Xp系统cap.WdmCap.nChannel = 0;cap.WdmCap.nCapWidth = 640;cap.WdmCap.nCapHeight = 480。因为不同参数的原因导致同样的代码能在win7能用,XP系统不能用(原代码在win7下开发的)。按照我的理解win7和XP应该在参数传递方面是一样的,为什么会这样呢?求大神讲解一下!谢谢!!