日期:2014-05-18  浏览次数:20820 次

各位大侠,请问。关于录音的问题?
我想在C#里调 waveInOpen 函数。

这是一个WIN32 API

我在C#里是如此包装的。

[DllImport("winmm.dll", EntryPoint = "waveInOpen")]
public static extern int waveInOpen(
ref int lphWaveIn, 
int uDeviceID, 
ref WAVEFORMAT lpFormat,
int dwCallback, //此处注意
int dwInstance, 
int dwFlags);

上面红的参数是一个INT, 在C++下是可以传线程的ID以及回调函数的名称,不知在C#里如何传?

请各位大侠赐教。

------解决方案--------------------
探讨
申明一个委托

public delegate void WaveInOpenProc(...);

[DllImport("winmm.dll", EntryPoint = "waveInOpen")]
public static extern int waveInOpen(
ref int lphWaveIn,
int uDeviceID,
ref WAVEFORMAT lpFormat,
WaveInOpenProc callback,
int dwInstance,
int dwFlags);

定义一个和WaveInOpenProc返回值和参数一样的函数:

void WaveInOpenProcFunc(...)
{
}

调用
waveInOpen(..…

------解决方案--------------------
http://blog.csdn.net/qiqi5521/archive/2007/12/02/1911371.aspx
参考这个