http://community.csdn.net/Expert/topic/4212/4212843.xml?temp=.4371607
http://community.csdn.net/Expert/topic/4212/4212846.xml?temp=.388241

解决方案 »

  1.   

    vc版不是有好几个mvp么,人呢?
    vcforever,zhucde,jiangsheng,happyporrort
    人都去哪了?都没人回答我问题?
      

  2.   

    static char rcsid[] = "$Id: vxdcall.cpp 2.10 1998/06/01 18:03:03 mdimeo Exp $" ;
    #define _BUILD_BT848DLL    // all __BT848FUNC functions are exported#include "Bt848fcn.h"
    HANDLE       hVxD;                           // handle to VxD
    //===========================================================================
    // Functions thunk down to capture driver
    //===========================================================================
    extern "C" int   DRV_SetVideoSource( int conn );
    extern "C" int   DRV_GetVideoSource( void );
    extern "C" int   DRV_SetBrightness( int brightness );
    extern "C" int   DRV_GetBrightness( void );/////////////////////////////////////////////////////////////////////////////
    // Method:  ErrorCode __BT848FUNC Bt848GetBrightness( int * brightness )
    // Purpose: Ask VxD what brightness value has set to
    // Input:   None
    // Output:  int * brightness - brightness value
    // Return:  Success or Fail
    /////////////////////////////////////////////////////////////////////////////
    extern "C" __declspec(dllexport) ErrorCode __BT848FUNC Bt848GetBrightness( int * brightness )   //不知道 __BT848FUNC  的定义是什么样子的
    {
       *brightness = DRV_GetBrightness();
       if ( (*brightness < 0) || (*brightness > 255) )
      return ( Fail );
       return( Success );
    }BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
     )
    {
        return TRUE;
    }
    访问时 可以通过下面的方法HMODULE hDll=LoadLibrary("动态库名.dll");
    typedef  ErrorCode (MyFunc) (int);
    MyFunc* func;
    func=(MyFunc*)GetProcAddress(hDLL,"Bt848GetBrightness");
    //func 就是访问该函数的指针 可以这样使用func(100);FreeLibrary(hDll);
      

  3.   

    呵呵,还是使用DirectShow做吧。看这段代码好像是使用到了Vxd,在Win2000以后Vxd好像就不能使用了。
      

  4.   

    http://www.vckbase.com/document/viewdoc/?id=947
    http://www.vckbase.com/document/viewdoc/?id=580
      

  5.   

    to:flyelf
    就是设置视频采集的亮度,不知道有没有什么api或者代码什么的?
      

  6.   

    或者使用vfw做那样你就不必处理与硬件的相关的东东了。关于DirectShow和vfw可以参考一本叫做《VC视频/音频开发案例精选》的书,随书的光盘中有很多实用例子。
      

  7.   

    to vcleaner,你好,在vfw里并没有设置亮度等api,至于directshow,我从codeproject上下载了master的 DirectXCapture_demo_Enhanced2 ,里面的设置亮度根本不起效果
      

  8.   

    唉,看来几位mvp是功成身退了,象思归,邹建那样的人太少了
      

  9.   

    你不会是想把DLL包装一遍给C#用吧,其实没必要的,直接用p/invoke就可以了
    参考http://msdn.microsoft.com/msdnmag/issues/03/07/NET/
      

  10.   

    关键是dll调用不起来,估计是dll错的
      

  11.   

    "在vfw里并没有设置亮度等api,至于directshow,我从codeproject上下载了master的 DirectXCapture_demo_Enhanced2 ,里面的设置亮度根本不起效果"
    会不会是没有正确安装设备驱动的关系呢
      

  12.   

    楼主不要让别人笑话了,给的代码明明是getbrightness的,却要调整视频亮度?