“LRecordWave.WaveAPIFun”不可访问,因为它受保护级别限制

yangyi_33855 2012-02-16 11:09:11
今天编程的时候,出现了标题所示的问题,但是我WaveAPIFun类以前运行的时候从来没出过错的啊。
下面是这个类的全部代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace LRecordWave
{
internal class WaveAPIFun
{
// consts 地址常量
public const int MMSYSERR_NOERROR = 0; // no error 表示无异常的地址

public const int MM_WIM_DATA = 0x3C0;

public const int CALLBACK_FUNCTION = 0x00030000;


public delegate void WaveDelegate(IntPtr hdrvr,int uMsg,int dwUser,ref WaveHdr wavhdr,int dwParam2);

[StructLayout(LayoutKind.Sequential)]
public struct WaveHdr//结构体,指定波形文件结构
{
public IntPtr lpData; // pointer to locked data buffer 指针,用于指定数据缓冲区
public int dwBufferLength; // length of data buffer 数据缓冲区的长度
public int dwBytesRecorded; // used for input only
public IntPtr dwUser; // for client's use
public int dwFlags; // assorted flags (see defines)
public int dwLoops; // loop control counter
public IntPtr lpNext; // PWaveHdr, reserved for driver
public int reserved; // reserved for driver
}
private const string mmdll="winmm.dll";

//录音时,所需用到的winmm.dll中的API函数
[DllImport(mmdll)]
public static extern int waveInPrepareHeader(IntPtr hWaveIn, ref WaveHdr lpWaveInHdr, int uSize);
[DllImport(mmdll)]
public static extern int waveInUnprepareHeader(IntPtr hWaveIn, ref WaveHdr lpWaveInHdr, int uSize);
[DllImport(mmdll)]
public static extern int waveInAddBuffer(IntPtr hwi, ref WaveHdr pwh, int cbwh);
[DllImport(mmdll)]
public static extern int waveInGetNumDevs();
[DllImport(mmdll)]
public static extern int waveInOpen(out IntPtr phwi, int uDeviceID, WaveFormat lpFormat, WaveDelegate dwCallback, int dwInstance, int dwFlags);
[DllImport(mmdll)]
public static extern int waveInStart(IntPtr hwi);
[DllImport(mmdll)]
public static extern int waveInReset(IntPtr hwi);
[DllImport(mmdll)]
public static extern int waveInClose(IntPtr hwi);
}

出错的位置是:
private WaveAPIFun.WaveHdr m_Header;//引用结构体,用来存放暂存数据的地址
internal static void WaveInProc(IntPtr hdrvr, int uMsg,
int dwUser, ref WaveAPIFun.WaveHdr wavhdr, int dwParam2)
{^^^^^^^^^}等地方,

求教高手,这是什么原因呢,是不是API函数配置出问题了?
...全文
243 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
源码链接: https://pan.quark.cn/s/651b74ed6067 《MQL4中文帮助手册》是一部详尽阐述MetaQuotes Language 4(MQL4)编程语言的参考书籍,其核心目标在于协助用户掌握并运用MQL4进行金融市场的自动化交易系统构建。MQL4作为MetaTrader 4交易平台的核心编程语言,赋予了交易者开发自定义指标、Expert Advisors(EA智能交易系统)以及脚本的能力。 ### MQL4基础知识 1. **Syntax 语法**:MQL4的语法规则与C/C++语言展现出相似性,涵盖了变量声明、函数调用、条件判断、循环机制等核心要素。熟练掌握并合理运用语法是开发高效MQL4代码的先决条件。 2. **Comments 注释**:在MQL4编程环境中,单行注释采用两个斜线(//)进行标识,而多行注释则通过/* 和 */进行界定。注释的主要功能在于阐释代码用途,从而提升代码的可读性与可维护性。 3. **Identifiers 标识符**:标识符是程序中用于命名变量、函数、类等元素的字符序列。其命名规则要求必须以字母或下划线作为开头,后续可包含字母、数字或下划线组合。MQL4语言对大小写敏感,因此`MyVariable`与`myvariable`被视为两个独立的标识符。 4. **Reserved words 保留字**:保留字是MQL4语言中预先设定的特殊词汇,例如`int`, `bool`, `double`, `if`, `else`, `for`, `while`等,这些词汇不可用作自定义标识符,以防止与语言关键字产生冲突。 5. **Data types 数据类型**:MQL4支持多元化的数据类型,包括...

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧