我要发帖 回复

正式会员

19

主题

71

积分

0

专家分

:

私信
发表时间 : 2007-10-6 12:25:24 | 浏览 : 1263    评论 : 1
基于main()的vega程序中想通过创建视频窗口,调用capSetCallbackOnFrame(ghWndCap , FrameCallbackProc);注册的回调函数来获取图像信息,可是编译不能通过,static LRESULT CALLBACK FrameCallbackProc(HWND ghWnd,LPVIDEOHDR lpVData);申明为static还是报错error C2601: 'FrameCallbackProc' : local function definitions are illegal,但是这个相同的回调函数语句放在winmain风格的vega程序中却可以编译通过,大家有没有与遇到这样的问题?希望能讨论讨论,或者如何解决,谢谢。
具体代码如下:
#include <stdio.h>
#include <stdlib.h>                                       
#include "vg.h"            
#include "pf.h"
#include <GL/gl.h> // Header File For The OpenGL32 Library
#include <vfw.h>// Header File For Video For Windows
#include "fstream.h"//Header File For file
#include <windows.h>
#include <winuser.h>
#include <commdlg.h>

fstream file;

#pragma comment(lib, "opengl32.lib") //Search For OpenGL32.lib While Linking

#pragma comment(lib, "glu32.lib")// Search For GLu32.lib While Linking

#pragma comment(lib, "vfw32.lib")// Search For VFW32.lib While Linking
//static  LRESULT CALLBACK StreamCallbackProc(HWND hWnd,LPVIDEOHDR lpVHdr);
static LRESULT CALLBACK FrameCallbackProc(HWND ghWnd,LPVIDEOHDR lpVData);//**回调函数申明
vgWindow *win;
vgObserver  *mainObs   = NULL;
vgChannel   *mainChan  = NULL;
BOOL fOK;   
unsigned char* data = 0;          // Pointer To Our Resized Image
HWND hMainWin,ghWndCap;

int main()
{         
        //MessageBox(hMainWin,"无法连接到指定的视频捕获驱动","Hello",MB_OK);
        file.open("debug.txt",ios::out);
        vgInitSys();
        vgDefineSys( "town.adf" );
        
        vgConfigSys();
         
        mainObs = vgGetObserv( 0 );  
        win   =vgGetWin(0);
         if ( win )
        vgWinSize( win, 20, 500, 90, 640 );
        mainChan = vgGetObservChan( mainObs, 0 );
        hMainWin=FindWindow(NULL,"Press All Mouse ButtonS to Reset");
        MessageBox(NULL,"hMainWin","Hello",MB_OK);
        ghWndCap = capCreateCaptureWindow( "my capture window",                       // 窗口名称

                    WS_CHILD | WS_VISIBLE,      // 窗口风格

                    0, 0, 176,144,              // 窗口位置和大小

                    hMainWin, 1) ;                 //父窗口句柄
      
      capSetCallbackOnFrame(ghWndCap , FrameCallbackProc);//**本语句为添加的回调函数注册                 
      capSetCallbackOnError(ghWndCap, NULL);
       //{ unsigned char *data;
         //data= lpVData->lpData;
        //   return( 0 );   }
if (!capDriverConnect (ghWndCap, 0))
{   MessageBox(NULL, TEXT("连接图像卡失败"), TEXT("错误提示"), MB_OK);
      }

CAPDRIVERCAPS  gCapDriverCaps ;
capDriverGetCaps(ghWndCap, &gCapDriverCaps, sizeof(CAPDRIVERCAPS)) ;
capPreviewRate(ghWndCap,30);  
capPreview(ghWndCap,TRUE);      //开始预览显示
capCaptureSequence(ghWndCap);

LRESULT CALLBACK FrameCallbackProc(HWND ghWnd,LPVIDEOHDR lpVData)//**本语句为回调函数的具体定义
{ unsigned char *data;
return( 0 );  }        
        while( true ) {

                vgSyncFrame();
                vgFrame();
        }
     
        return 0;
}

最近VR访客

relax 评论于2007-10-8 15:41:39
ding

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-10-29 02:30 AM

返回顶部