视频图像的监控系统,从摄像头采集图像进行显示和处理,采用线程显示图像,由于在采集卡SDK中使用的是在编辑框中显示图像,因此编程初期直接选择了在编辑框中显示图像,但是现在是显示不了图像,紧急求教!
    “显示”按钮的代码:
void CCGViewSystemDlg::OnStartCap() 
{
m_hSnapThread = (HANDLE)_beginthreadex(NULL,
NULL,
(PTHREAD_START)SnapThreadCallback,
this,
CREATE_SUSPENDED, 
&m_dwThreadID);           //启动线程
if (m_hSnapThread != NULL) 
{
IfStarCap = TRUE;                     //标识开始采集
ResumeThread(m_hSnapThread);
}
}
对应的线程代码:
DWORD CCGViewSystemDlg::SnapThreadCallback(LPVOID lpThreadParameter)
{
CGSTATUS status = CG_OK;                         //采集卡状态
BOOL bComplete = FALSE;                          //标识是否完成
int nStatus = 0, nNumber = 0;                    //采集状态相关参数
CCGViewSystemDlg *pFrame = NULL; pFrame = (CCGViewSystemDlg *)lpThreadParameter;   
ASSERT(pFrame); status = CGStartSnap(pFrame->m_hcg, 0, TRUE, 2);      //采集卡的类库函数,开始采集两帧
CG_VERIFY(status);                                    //采集卡状态检测函数

if (CG_SUCCESS(status)) 
{
        while(pFrame->IfStarCap)
{
CGGetSnappingNumber(pFrame->m_hcg, &nStatus);       //这一段为采集卡采集操作,SDK中直                                                                                                 
if (pFrame->m_ScanMode == FRAME){                   //接拷的,应该没有问题
if ((nStatus == 2) && (! bComplete) ) 
{
nNumber = 0;
bComplete = TRUE;
}
if ((nStatus == 0) && bComplete) 
{
nNumber = 1;
bComplete = FALSE;
}
}
else{
if ((nStatus == 1) && (! bComplete))
{
nNumber = 0;
bComplete = TRUE;
}
if ((nStatus == 0) && bComplete)
{
nNumber = 1;
bComplete = FALSE;
}
} if (nNumber >= 0)            //当采集到图像帧执行显示函数ShowSnap
{
pFrame->ShowSnap(nNumber);
nNumber = -1;
}
Sleep(1);
}
}
CGStopSnap(pFrame->m_hcg);
return 1;
}
调用的ShowSnap(int nNumber)函数:
BOOL CCGViewSystemDlg::ShowSnap(int nNumber)
{
CGSTATUS status = CG_OK;
CDC *pDC  = NULL;
BYTE *pLinearAddr = NULL;
DWORD dwImageSize = 0;
HANDLE handle = NULL;

pDC = GetDlgItem(IDC_VIDEOWIN)->GetDC();            //取得编辑框IDC_VIDEOWIN的DC
ASSERT(pDC);
dwImageSize = 400 * 300 * 3; status = CGStaticMemLock(dwImageSize * nNumber, dwImageSize, &handle, (PVOID *)&pLinearAddr);
        //锁定静态内存,就是这个时候内存里的数据是采集来的图像数据了
if (CG_SUCCESS(status))
{
CGDataTransform(m_pImageBuffer, 
pLinearAddr,
400,
300,
24,
TRUE
);                       //转换原始图像数据为24位位图
CGStaticMemUnlock(handle);       //解锁静态内存
}
StretchDIBits(pDC->GetSafeHdc(),       //这个是我在网上找的,把数据拷贝到矩形中
0,
0,
400,
300,
0,
0,
400,
300,
m_pImageBuffer,
m_pBmpInfo,
DIB_RGB_COLORS,
SRCCOPY
);
return 1;
}
    图像显示方面只写了这些代码,其他的只有一个参数的初始化等。我是模仿采集卡SDK写的,但是SDK例程比较复杂,所以没有很深入的学习,我想问的是,要怎样才能在编辑框中显示图像呢?是不是还要在其他代码上进行刷新或者重画的操作?上面的代码编译都通过的,就是不显示图像,运行时也没有任何错误。各位高手们,帮帮忙吧,我都焦头烂额了!!第一次发帖,好像也没有积分,所以,可能不能给多的分数了,麻烦了