标题:类的调用
只看楼主
wuyangmouse
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-8-4
 问题点数:0 回复次数:8 
类的调用

我在一个项目里添加了两个类,两个类有一些关联,其中一个类包含有另一个类定义的东西,请问在主程序中调用时该怎么写呢?

两个类分别为:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;


namespace luyin1
{
/// <summary>
/// Class3 的摘要说明。
/// </summary>
public class APIClass
{
[DllImport("kernel32.dll",CharSet = CharSet.Auto)]
public static extern int GetShortPathName(
string IpszLongPath,
string shortFile,
int cchBuffer
);
[DllImport("winmm.dll",EntryPoint = "mciSendString",CharSet = CharSet.Auto)]
public static extern int mciSendString(
string IpstrCommand,
string IpstrReturnString,
int uReturnLength,
int hwndCallback

);



}
}



using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;


namespace luyin1
{

/// <summary>
/// Class3 的摘要说明。
/// </summary>
public class MCIClass
{

//
// TODO: 在此处添加构造函数逻辑
//

[MarshalAs(UnmangedType.ByValTStr,SizeConst = 260)]

private string Name = " ";

[MarshalAs(UnmangedType.ByValTStr,SizeConst = 128)]

private string durLenght = " ";

[MarshalAs(UnmangedType.LPTStr,SizeConst = 128)]

private string TemStr = " ";

int ilong;

public enum State
{
mPlaying = 1,
mPuase = 2,
mStop = 3
}
public struct structMCI
{
public bool bMut;
public int iDur;
public int iPos;
public int iVol;
public int iBal;
public string iName;
public State state;
}
public structMCI mc = new structMCI();
public string FileName
{
get
{
return mc.iName;
}
set
{
try
{
TemStr = " ";
TmeStr = TemStr.PadLeft(127,Convert.ToChar(" "));
Name = Name.PadLeft(260,Convert.ToChar(" "));
mc.iName = value;
ilong = APIClass.GetShortPathName(mc.iName,Name, Name.Lenght);
Name = GetCurrPath(Name);
Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + "alias media" ;
ilong = APIClass.mciSendString("close all ", TemStr,TemStr.Length,0);
ilong = APIClass.mciSendString( Name, TemStr,TemStr.Lenght,0);
ilong = APIClass.mciSendString("set media time format milliseconds",TemStr,TemStr.Length,0);
mc.state = State.mStop;
}
catch
{
MessageBox.Show("错误!");
}
}

}

public void Play()
{
TemStr = " ";
TemStr = TemStr.PadLeft(127,Convert.ToChar(" "));
APIClass.mciSendString("play media",TemStr,TemStr.Lenght,0);
mc.state = State.mPlaying;
}
public void Stop()
{
TemStr = " ";
TemStr = TemStr.PadLeft(128,Convert.ToChar(" "));
ilong = APIClass.mciSendString("close media",TemStr,128,0);
ilong = APIClass.mciSendString("close all",TemStr,128,0);
mc.state = State.mStop;
}
}
}


[此贴子已经被作者于2006-8-9 18:27:07编辑过]

搜索更多相关主题的帖子: using System summary 定义 Drawing 
2006-08-09 12:57
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
得分:0 
luyin1.MCIclass a=new luyin1.MCIclass();

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-09 13:00
wuyangmouse
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-8-4
得分:0 


谢谢楼上的朋友

小菜鸟我还不知道怎么调用动态链接库,上面的例子需要调用动态链接库的API函数,书上是这样写的


[MarshalAs(UnmangedType.ByValTStr,SizeConst = 260)]

private string Name = " ";

[MarshalAs(UnmangedType.ByValTStr,SizeConst = 128)]

private string durLenght = " ";

[MarshalAs(UnmangedType.LPTStr,SizeConst = 128)]

private string TemStr = " ";

int ilong;

我就怎么搬上去了,可是调试的时候出现下面的错误

G:\wuyang\cti\c#vs.net\luyin1\MCIClass.cs(23): 找不到类型或命名空间名称“UnmangedType”(是否缺少 using 指令或程序集引用?)
G:\wuyang\cti\c#vs.net\luyin1\MCIClass.cs(23): 重载“MarshalAsAttribute”方法未获取“0”参数
G:\wuyang\cti\c#vs.net\luyin1\MCIClass.cs(27): 重载“MarshalAsAttribute”方法未获取“0”参数
G:\wuyang\cti\c#vs.net\luyin1\MCIClass.cs(27): 找不到类型或命名空间名称“UnmangedType”(是否缺少 using 指令或程序集引用?)
G:\wuyang\cti\c#vs.net\luyin1\MCIClass.cs(31): 重载“MarshalAsAttribute”方法未获取“0”参数
G:\wuyang\cti\c#vs.net\luyin1\MCIClass.cs(65): 名称“TmeStr”在类或命名空间“luyin1.MCIClass”中不存在
G:\wuyang\cti\c#vs.net\luyin1\MCIClass.cs(31): 找不到类型或命名空间名称“UnmangedType”(是否缺少 using 指令或程序集引用?)
G:\wuyang\cti\c#vs.net\luyin1\MCIClass.cs(68): “string”并不包含对“Lenght”的定义
G:\wuyang\cti\c#vs.net\luyin1\MCIClass.cs(69): 名称“GetCurrPath”在类或命名空间“luyin1.MCIClass”中不存在
G:\wuyang\cti\c#vs.net\luyin1\MCIClass.cs(72): “string”并不包含对“Lenght”的定义
G:\wuyang\cti\c#vs.net\luyin1\MCIClass.cs(88): “string”并不包含对“Lenght”的定义

请问是怎么回事啊?要怎么改呢?

2006-08-09 16:25
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
得分:0 
添加
using System.Runtime.InteropServices

TmeStr是TemStr
Lenght是Length

[DllImport("kernel32.dll",CharSet = CharSet.Auto)] //這個才是調用api
public static extern int GetShortPathName(
string IpszLongPath,
string shortFile,
int cchBuffer
);


[MarshalAs(UnmangedType.LPTStr,SizeConst = 128)] //這個是指定傳送給非拖管程序的參數的方法

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-09 16:32
wuyangmouse
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-8-4
得分:0 

我竟然写错了单词

大虾能具体解释一下 [MarshalAs(UnmangedType.LPTStr,SizeConst = 128)] //指定傳送給非拖管程序的參數的方法

这句是怎么回事吗,为什么把它加在MCIClass类里面说是定义API函数使用的字符串变量可运行的时候显示错误

  名称“GetCurrPath”在类或命名空间“luyin1.MCIClass”中不存在
  找不到类型或命名空间名称“UnmangedType”(是否缺少 using 指令或程序集引用?)
  重载“MarshalAsAttribute”方法未获取“0”参数
 找不到类型或命名空间名称“UnmangedType”(是否缺少 using 指令或程序集引用?)
  重载“MarshalAsAttribute”方法未获取“0”参数
 找不到类型或命名空间名称“UnmangedType”(是否缺少 using 指令或程序集引用?)



2006-08-09 18:47
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
得分:0 
添加
using System.Runtime.InteropServices


具體去查看UnmanagedType枚舉 以指定的方式傳參

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-10 09:08
wuyangmouse
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-8-4
得分:0 

我有写using System.Runtime.InteropServices;啊

2006-08-10 12:35
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
得分:0 
單詞錯了
UnmangedType是UnmanagedType


[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-10 12:46
wuyangmouse
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-8-4
得分:0 


不好意思小弟的英文水平连自己都鄙视自己到处错词让大家见笑了


现在就一错误了 名称“GetCurrPath”在类或命名空间“luyin1.MCIClass”中不存在

说实话我也不太清楚 Name = GetCurrPath(Name);这句的意思,自己理解播放文件的名字为自己指定的文件的名字

不知道是这样吗?

为什么会有这样的错误呢是不是还要添加点什么定义呢?

2006-08-10 16:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-82984-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022802 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved