“IVideoCallback”: 未定义基类下面为代码:
IVideoCallback定义在LibXIAdapter.h头文件里
class IVideoCallback
{
public:
virtual void OnVideoData(const BYTE * pbFrame, int cbFrame, const BYTE * pbFrameInfo, int cbFrameInfo) = NULL;
};// CCutScreenDlg 对话框的头文件里
class CCutScreenDlg : public CDialog,pubic IVideoCallback
{}问题:
上面问题能解决吗?
求教下怎么让一个对话框类继承一个自己定义的类

解决方案 »

  1.   

    // CCutScreenDlg 对话框的头文件里
    #include LibXIAdapter.h
      

  2.   

    CCutScreenDlg 对话框的头文件里  包含IVideoCallback所在的头文件没
      

  3.   

    我是建立MFC对话框的程序的,在CCutScreenDlg已经加了,没反应才不知道怎么办
      

  4.   

    你这定义的是虚基类,需要在继承的类中重写虚基类中的所有需函数,也就是你在CCutScreenDlg中必须要实现OnVideoData函数
      

  5.   

    void OnVideoData(const BYTE * pbFrame, int cbFrame, const BYTE * pbFrameInfo, int cbFrameInfo);
    和函数的实现也做了。他还显示“IVideoCallback”: 未定义基类
      

  6.   

    在 CCutScreenDlg.h中加上#include LibXIAdapter.h
      

  7.   

    CCutScreenDlg.h中的代码~~~~~~~~~~~~~~~~~~~~~~~~~
    #pragma once
    #include "afxwin.h"
    #include "LibXIAdapter.h"// CCutScreenDlg 对话框
    class CCutScreenDlg : public CDialog,public IVdeoCallback
    {
    // 构造
    public:
    CCutScreenDlg(CWnd* pParent = NULL); // 标准构造函数// 对话框数据
    enum { IDD = IDD_CUTSCREEN_DIALOG }; protected:
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
    public:
    void CCutScreenDlg::OnVideoData(const BYTE * pbFrame, int cbFrame, const BYTE * pbFrameInfo, int cbFrameInfo);
    // 实现
    protected:
    HICON m_hIcon; // 生成的消息映射函数
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    DECLARE_MESSAGE_MAP()
    public:
    // 用于控制图片选择
    CListBox m_choose_picture;
    afx_msg void OnClose();
    private:
    CBitmap m_bmp;
    // afx_msg void OnBnClickedButton5();
    // afx_msg void OnBnClickedButton4();
    // afx_msg void OnBnClickedButton7();
    public:
    afx_msg void OnBnClickedCheck();
    afx_msg void OnLbnDblclkPicList();
    int m_value;
    };LibXIAdapter.h~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // from a DLL simpler. All files within this DLL are compiled with the LIBXIADAPTER_EXPORTS
    // symbol defined on the command line. this symbol should not be defined on any project
    // that uses this DLL. This way any other project whose source files include this file see 
    // LIBXIADAPTER_API functions as being imported from a DLL, whereas this DLL sees symbols
    // defined with this macro as being exported.
    #ifdef LIBXIADAPTER_EXPORTS
    #define LIBXIADAPTER_API __declspec(dllexport)
    #else
    #define LIBXIADAPTER_API __declspec(dllimport)
    #endifclass IVideoCallback
    {
    public:
    // 1.返回设备采集的画面数据,画面格式为RGB24
    // 2.pbFrame - 为画面数据;cbFrame - 为画面数据的长度;
    // 3.pbFrameInfo - 为附加视频格式参数,可以不用理会;cbFrameInfo - 为pbFrameInfo的长度
    virtual void OnVideoData(const BYTE * pbFrame, int cbFrame, const BYTE * pbFrameInfo, int cbFrameInfo) = NULL;
    };
    typedef struct _RAWVIDEO_FRAME_INFO
    {
    int cbStride;
    BOOL bTopDown;
    float fAspectRatio;
    RECT rectUpdate;
    } RAWVIDEO_FRAME_INFO, *PRAWVIDEO_FRAME_INFO;// XIAdapter库初始化函数,在所有XI_的函数调用之前调用
    LIBXIADAPTER_API BOOL XI_InitLib();// XIAdapter库退出调用函数,放在程序退出时调用
    LIBXIADAPTER_API void XI_ExitLib();// 获取当前的XI设备数量
    LIBXIADAPTER_API int  XI_GetDeviceCount();// 1.打开nIndex指定的设备,从0开始,必须在XI_GetDeviceCount()返回值大于0时才能调用
    // 2.通常情况下,只有一个设备,nIndex传0即可
    // 3.XI_OpenDevice()调用后,必须调用XI_CloseDevice()后才能再次调用XI_OpenDevice(),重复调用XI_OpenDevice()没有任何效果
    LIBXIADAPTER_API BOOL XI_OpenDevice(int nIndex);// 关闭打开的设备
    LIBXIADAPTER_API void XI_CloseDevice();// 1.将打开的设备运行
    // 2.必须在XI_OpenDevice()调用成功后才能调用XI_Run()
    // 3.必须在调用XI_SetVideoCallback()后才能调用,否则必定返回失败
    // 4.调用XI_Run()后,XI_SetVideoCallback()设置的IVideoCallback::OnVideoData()回调函数将会按照帧率被频繁调用
    LIBXIADAPTER_API BOOL XI_Run();// 1.停止设备运行
    // 2.此函数调用后,XI_SetVideoCallback()设置的IVideoCallback::OnVideoData()回调函数将不会被调用
    LIBXIADAPTER_API void XI_Stop();// 1.设置采集视频数据的回调函数,此函数在子线程中被调用,注意公共数据的跨线程保护
    // 2.XI_SetVideoCallback()在XI_OpenDevice()调用后即可调用
    // 3.XI_SetVideoCallback()在XI_Run()调用前调用
    LIBXIADAPTER_API void XI_SetVideoCallback(IVideoCallback * pCallback);// 1.设置视频采集的帧速率,区间为1.0f至30.0f
    // 2.此函数可以不调用,不调用时缺省帧率为15.0f
    // 3.帧率代表图像数据的刷新速度,15.0f表示每秒钟调用IVideoCallback::OnVideoData()函数15次
    LIBXIADAPTER_API void XI_SetFrameRate(float fRate);// 1.获取图像大小,无信号时画面大小为0x0
    // 2.在调用XI_OpenDevice()成功后的任何时刻均可调用查询当前信号的大小
    LIBXIADAPTER_API BOOL XI_GetVideoSize(int * px, int * py);// 1.获取当前是否有信号,有信号返回True,无信号返回False
    // 2.在调用XI_OpenDevice()成功后的任何时刻均可调用查询当前是否有信号
    LIBXIADAPTER_API BOOL XI_IsSignalPresent();// 1.自动调节图像位置
    // 2.在调用XI_OpenDevice()成功后的任何时刻均可调用
    // 3.在某些情况下,比如VGA设备信号启动时,画面有可能会出现边界黑框,使用此函数自动调整画面位置,消除黑边
    LIBXIADAPTER_API BOOL XI_AutoDetect();注:其cpp用dll链接进来的。 就是这样还不行,我还满头大汗,急求大家意见。
      

  8.   

    问题出来了,我写错一个地方了,神啊,我可能太累了
    class CCutScreenDlg : public CDialog,public IVdeoCallback
    真的是这个::IVideoCallback
    啥啊,一个这样的错误 5!!!
      

  9.   

    class CCutScreenDlg : public CDialog,public IVdeoCallback/*IVideoCallback*/