-
2005-09-03
BCB中管道应用示例 - [C++Builder技术文档]
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::RunCmd(AnsiString cmd,TStringList *stringlist)
{
TMemoryStream *memstream=new TMemoryStream();
AnsiString rn="\\r\\n";
PROCESS_INFORMATION proc;
STARTUPINFO start;
SECURITY_ATTRIBUTES sa;
long ret;
unsigned long lngBytesread;
HANDLE hReadPipe,hWritePipe;
char *strBuff=(char *)malloc(256);
if(strBuff==NULL)
{
return false;
}
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle=true;
sa.lpSecurityDescriptor=NULL;
ret=CreatePipe(&hReadPipe,&hWritePipe,&sa,0);
if(ret==0)
{
//创建管道失败
ShowMessage("创建管道失败");
return false;
}
memset(&start,0x00,sizeof(STARTUPINFO));
start.cb=sizeof(STARTUPINFO);
start.dwFlags=STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
start.hStdOutput=hWritePipe;
start.hStdError=hWritePipe;
bool retc=CreateProcess(NULL,cmd.c_str(),NULL,NULL,true, 0, 0, NULL, &start, &proc);
if(!retc)
{
return false;
}
CloseHandle(hWritePipe);
unsigned long len;
memstream->Position=0;
while(true)
{
memset(strBuff,0x00,256);
GetFileSize(hReadPipe,&len);
ret = ReadFile(hReadPipe, strBuff, 256, &lngBytesread,NULL);
if(ret==0)
{
break;
}
else
{
memstream->Write(strBuff,lngBytesread);
}
}
CloseHandle(proc.hProcess);
CloseHandle(proc.hThread);
CloseHandle(hReadPipe);
memstream->Position=0;
free(strBuff);
stringlist->LoadFromStream(memstream);
memstream->Clear();
delete memstream;
return true;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *StrList=new TStringList;
AnsiString strcmd=Edit1->Text;
RunCmd(strcmd,StrList);
Memo1->Clear();
Memo1->Text=StrList->Text;
}
//---------------------------------------------------------------------------
-
2004-05-07
媒体播放器==开发中。。。 - [我的全部软件]
[face07]基于winamp插件解码模块,皮肤技术还在继续开发,目前已经有基本雏形了
下载地址:下载媒体播放器内部版 -
2004-04-24
皮肤技术研究 - [C++Builder技术文档]
做播放器的话,嘿嘿,当然离不开皮肤技术了。。。
[face01]实现皮肤技术有很多种方法,最简单的就是用第三方控件或者皮肤类,但别人的东西终究还是别人的东西,要不就是收费,要不就是有很多限制,所以,好东西呢,还是自己造比较好。。[face07]
自己实现皮肤的话,首先要解决的就是不规则窗体的问题,因为皮肤界面千变万化,所以窗体是必须要适应皮肤变化的,这个实现起来比较容易,用几个API函数就可以实现了
分别是:
CreateRect() //当然还有别的API函数,用来创建多边形等,这个是创建矩形区域的
RgnCombineRgn() //区域运算用的,主要是把不需要的区域删除,留下需要的界面
SetWindowRgn() //用来重新设置窗体区域
比如:现在要根据当前Image里的图片创建不规则窗体
int x,y; HRGN WndRgn,TempRgn;
WndRgn=CreateRectRgn(0,0,Image1->Width,Image1->Height);
for(x=0;x<Width;x++)
for(y=0;y<Height;y++)
if(Image1->Canvas->Pixels[x][y]==clBlack)
{
TempRgn=CreateRectRgn(x,y,x+1,y+1); 创建需要删除的区域,以象素为单位
CombineRgn(WndRgn,WndRgn,TempRgn,RGN_XOR); 剔除不必要的区域
DeleteObject(TempRgn);
}
SetWindowRgn(Handle,WndRgn,true);
就这么简单。。。
至于按钮之类的,原理和这个都一样,不过要先创建一个所以图片,用来确定按钮在界面中的位置 -
2004-04-18
Winamp插件研究[转自CSDN] - [C++Builder技术文档]
近来想做一个播放器,找了很久一直都找不到理想的解码器,不过最后还是想到winamp的插件。。。
[face10]既然winamp基于插件来完成解码,那么它就一定有解码器,只要找到它的接口就可以是使用了
去官方网站下载winamp的SDK,终于得知它的解码工作交给相应的Input插件模块。
在 Pulgin 文件夹中有很多的 DLL(动态链接库)文件,其中的in_mp3.dll就是mp3的解码插件,这个插件可以解码AAC/Mpeg1/mpeg2/mpeg3的音频,还有一个in_wm.dll自然就是解码WMA的了
从SDK文档中得知,每种插件都具有固定的数据结构,如Input模块的数据结构(In_Module ),Output模块的(Out_Module ),同时每种插件的dll都具有约定的入口函数,对于Input插件,其入口函数为
__declspec( dllexport ) In_Module * winampGetInModule2()
其结构体:
typedef struct
{
int nVer; // 模块版本号
char *szDesc; //模块描述信息
HWND hMainWnd; // Winamp的主窗体句柄(由Winamp来填写)
HINSTANCE hDllInstance; // DLL实例句柄(由Winamp来填写)
char *szFileExt; // 扩展名过滤器,格式参见GetOpenFileName
int nIsSeekable; // 是否可索引媒体,是-你可以拖动进度条,否-反之
int UsesOutputPlug; // 是否使用输出插件?你想在这个模块里搞定一切?
// 下面都是函数指针,将被Winamp调用
void (*Config)(HWND hwndParent); // 配置对话框
void (*About)(HWND hwndParent); // 关于对话框
void (*Init)(); // 初始化
void (*Quit)(); // 退出
// szFile - 传入的文件名,szTitle - 传出的标题,nLen - 转出的时间长度,毫秒。
// 如果szFile传NULL,则返回当前播放文件的信息
void (*GetFileInfo)(char *szFile, char *szTitle, int *nLen);
int (*InfoBox)(char *szFile, HWND hwndParent); // 弹出文件信息对话框
int (*IsOurFile)(char *szFile); // 检查文件格式
int (*Play)(char *szFile); // 开始播放文件szFile,返回0正常,-1错误
void (*Pause)(); // 暂停处理
void (*UnPause)(); // 取消暂停
int (*IsPaused)(); // 是否斩停?1是暂停,0不是
void (*Stop)(); // 停止播放
int (*GetLength)(); // 取得长度,毫秒单位
int (*GetOutputTime)(); // 获取当前时间,一般调用out模块的同名函数即可
void (*SetOutputTime)(int nTime); // 索引到某一时刻
void (*SetVolume)(int volume); // 音量调节,从0 - 255
void (*SetPan)(int pan); // 左右声道平衡,从-127 - 127
//下面的函数多和AVS、可视化效果、均衡器等有关,具体咱们用不到,就暂时不讲了。
void (*SAVSAInit)(int maxlatency_in_ms, int srate);
void (*SAVSADeInit)(); // call in Stop()
void (*SAAddPCMData)(void *PCMData, int nch, int bps, int timestamp);
int (*SAGetMode)();
void (*SAAdd)(void *data, int timestamp, int csa);
void (*VSAAddPCMData)(void *PCMData, int nch, int bps, int timestamp);
int (*VSAGetMode)(int *specNch, int *waveNch);
void (*VSAAdd)(void *data, int timestamp);
void (*VSASetInfo)(int nch, int srate);
int (*dsp_isactive)();
int (*dsp_dosamples)(short int *samples, int numsamples, int bps, int nch, int srate);
void (*EQSet)(int on, char data[10], int preamp);
void (*SetInfo)(int bitrate, int srate, int stereo, int synched);
Out_Module *outMod; // 看看,Winamp终于露出马脚了吧?
} In_Module;
这样通过这个入口函数,就可以轻易的得到了Input插件的 In_Module结构体,接下来的事情自然也就很容易了,有了这个结构体,插件的所有功能都可以调用了。
不过单凭这个Input插件还是不能放出声音来的,因为Input插件虽然能完成mp3或者WMA的解码,但却没有把他们输出来,所以,就得自己写输出模块。不过,winamp有个OutPut插件可以完成输出功能,这就是Out_Wave.dll,加上这个插件,那么播放mp3就非常容易了。
OutPut插件得入口函数
__declspec( dllexport ) Out_Module * winampGetOutModule()
其结构体为:Out_Module
typedef struct
{
// 下面有些和In_Module一样,就不赘述了。
int nVer;
char *szDesc;
int nId; // 自己给一个ID,不知道有什么用,反正大于65536就行了。
HWND hMainWindow;
HINSTANCE hDllInstance;
void (*Config)(HWND hwndParent);
void (*About)(HWND hwndParent);
void (*Init)();
void (*Quit)();
// nSample - 采样率, nChannels - 声道数,1或2
// nBitPerSamp - 每采样的位率,nBufLen、nPreBufLen - 缓冲长度,咱们用不到
// 返回大于0正常播放,小于0失败
int (*Open)(int nSample, int nChannels, int nBitPerSamp, int nBufLen, int nPreBufLen);
void (*Close)(); // 关闭输出设备
// pBuf - 内存数据块,nLen - 数据块的长度
int (*Write)(char *pBuf, int len); // 返回0成功 -
2004-04-11
LRC格式歌词分解程序 - [C++Builder技术文档]
作为1.12版歌词串串烧的一个模块,主要用来分解LRC格式的歌词,该模块已经完全封装为一个类,方便调用
下面是LRC格式的描述
LRC 歌词是一种包含着“[*:*]”形式的“标签(tag)”的、基于纯文本的歌词专用格式。最早由郭祥祥先生(Djohan)提出并在其程序中得到应用。这种歌词文件既可以用来实现卡拉OK功能(需要专门程序),又能以普通的文字处理软件查看、编辑。当然,实际操作时通常是用专门的LRC歌词编辑软件进行高效编辑的。以下具体介绍LRC格式中的“标签”。
时间标签(Time-tag)
形式为"[mm:ss]"或"[mm:ss.fff]"(分钟数:秒数)。数字须为非负整数,比如"[12:34.5]"是有效的,而"[0x0C:-34.5]"无效。
它可以位于某行歌词中的任意位置。一行歌词可以包含多个时间标签(比如歌词中的迭句部分)。根据这些时间标签,用户端程序会按顺序依次高亮显示歌词,从而实现卡拉OK功能。另外,标签无须排序。
标识标签(ID-tags)
其格式为"[标识名:值]"。大小写等价。以下是预定义的标签。
[ar:艺人名]
[ti:曲名]
[al:专辑名]
[by:编者(指编辑LRC歌词的人)]
[offset:时间补偿值] 其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的。
样例
[ar:unknown]
[ti:sample]
[al:none]
[by:me]
[01:02.355][00:00]This line should be sung twice
[00:05.7]And this one... once only.
开发标准(供程序员阅读参考)
以下列出了开发支持LRC格式的软件时应遵守的一些标准。
无论是否在行首,行内凡具有“[*:*]”形式的都应认为是标签。(注意:其中的冒号并非全角字符“:”)
凡是标签都不应显示。
凡是标签,且被冒号分隔的两部分都为非负数,则应认为是时间标签。因此,对于非标准形式(非“[mm:ss]”)的时间标签也应能识别(如“[0:0]”)。
凡是标签,且非时间标签的,应认为是标识标签。
标识名中大小写等价。
为了向后兼容,应对未定义的新标签作忽略处理。另应对注释标签([:])后的同一行内容作忽略处理。
应允许一行中存在多个标签,并能正确处理。
应能正确处理未排序的标签。 -
2004-04-11
Unicode编码文件的读取 - [C++Builder技术文档]
Unicode就是宽字符编码,它与ANSI编码最大的不同就是一个ANSI编码的位宽是8位,而Unicode的位宽是16位,比如:一个Unicode编码的字符 ’A’ 其16进制编码为0x0041,而同样的字符用ANSI编码就会表示为0x41;
转入正题,不去管Unicode的编码方式,只要能把它识别出来就可以了。Windows SDK中提供了一个API函数,可以把ASCII编码转换为Unicode编码,那就是WideCharToMultiByte()函数,所以编码转换工作就全部交给这个函数了
看一下WideCharToMultiByte()的原型声明:
int WideCharToMultiByte(
UINT CodePage, // code page
DWORD dwFlags, // performance and mapping flags
LPCWSTR lpWideCharStr, // address of wide-character string
int cchWideChar, // number of characters in string
LPSTR lpMultiByteStr, // address of buffer for new string
int cchMultiByte, // size of buffer
LPCSTR lpDefaultChar, // address of default for unmappable characters
LPBOOL lpUsedDefaultChar // address of flag set when default char. used
);
第一个参数使用CP_ACP,第二个参数设为0,第三个参数就是要转换的Unicode字符串的指针,第四个参数,Unicode字符串长度,第五个参数转换到ANSI字符串的指针,第六个参数ANSI字符串的长度
这样就可以把Unicode转换为ANSI编码了,但是还有一个问题,就是如何判断要读入的文件是Unicode编码的还是ANSI编码的?查了一下资料,发现所有Unicode编码的文本文件,其文件头2个字节一定是"0xff","0xfe",这样就好办了,只要先读出这两个字节,然后就可以判断是不是Unicode编码的了。
if( psFirst[0] == ’\xff’ && psFirst[1] == ’\xfe’ )用这条语句就可以判断了。
下面给出C++的一段文件读取代码,返回的就是AnsiString的字符串,这样就可以读取Unicode编码和非Unicode编码的文件了
AnsiString TForm1::ReadUnicodeFromFile(const AnsiString &FileName)
{
char psFirst[2];
AnsiString str;
int iFileHandle = FileOpen( FileName, fmOpenRead );
int iFileLength = FileSeek( iFileHandle, 0, 2 );
FileSeek(iFileHandle, 0, 0);
FileRead(iFileHandle, psFirst, 2); //读出文件的头2个字节,用来判断是否为Unicode编码
if( psFirst[0] == ’\xff’ && psFirst[1] == ’\xfe’ )
{
wchar_t *wstr=new wchar_t[iFileLength+1];
FileRead(iFileHandle, wstr, iFileLength);
FileClose(iFileHandle);
int nLen = wcslen(wstr)+1;
char *buf = new char[2*nLen];
WideCharToMultiByte(CP_ACP, 0, wstr, nLen, buf, 2*nLen, NULL, NULL);
str = buf;
delete[] buf;
}
else
{
char *pszBuffer = new char[iFileLength+1];
FileSeek(iFileHandle, 0, 0);
FileRead(iFileHandle, pszBuffer, iFileLength);
FileClose(iFileHandle);
str=pszBuffer;
delete []pszBuffer;
}
return str;
} -
2004-04-09
歌词串串烧1.15版==发布 - [我的精品软件园]
歌词串串烧1.15版更新
下载地址:下载歌词串串烧1.15版
v1.15 Beta 【2004.04.14】
1.重写部分代码,使得速度有大幅度提高
2.修正添加歌手时导致类别无效的错误
3.修正最简模式的上一首和下一首按钮错误
v1.13 Beta 【2004.04.12】
1.修正修改专辑时导致歌词丢失的错误
2.升级歌词数据库,自带歌词增加到1500首
v1.12 Beta 【2004.04.07】
1.支持LRC格式歌词的批量导入
2.支持自定义类别
3.支持收藏夹拖放排序
4.增加歌手拖放分类功能
5.增加上一首和下一首按钮,大大方便操作
6.修正删除歌词时却没有删除收藏夹中相应条目的Bug
7.修正删除专辑时却没有删除收藏夹中相应条目的Bug
-
2004-04-05
完成了对Color Wheel的开发 - [我的精品软件园]
终于完成了对ColorWheel的开发,强烈推荐下载,这是我写过最复杂的软件了
软件功能主要是网页配色、屏幕取色以及色彩管理等等
软件下载地址:下载ColorWheel
屏幕截图
-
2004-04-05
图书助理0.11版==发布 - [我的精品软件园]
新增功能
1。增加自动提醒功能,在每天开机时,如果有图书已经超期或者将要到期,将会弹出窗口提醒
每天只提醒一次的哦,以后不管是重启还是重新开机,一天之内不会再提醒了
当然,你也可以启动程序查看自己的书籍情况
2。修正了一些Bug,稍微修改了一些界面元素
下载地址:下载图书助理0.11版
新功能截图:
-
2004-04-05
发布=图书助理=测试版 - [我的精品软件园]
刚刚完成的测试版,可能还有一定的bug,正在测试中
界面已经有了很大的变化哦,下载地址:下载图书助理
截图
-
这个是用C语言编写的贪吃蛇游戏哦,原创原创,TurboC下写的,去年的作品,有源代码的哦
源文件下载:贪吃蛇源文件下载
可执行文件下载:贪吃蛇游戏下载
截图
/**********************************************************/
/* 本程序在Turbo C 2.0下编译通过 */
/* */
/* 文件名: snake.c */
/**********************************************************/
/**********************************************************/
/* 程序中用到的库函数所在头文件应用 #include 命令包含进来 */
#include<graphics.h>
#include<bios.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<dos.h>
#include<conio.h>
#include<ctype.h>
/**********************************************************/
/* 定义符号常量 */
#define len sizeof(struct snake)
#define Q (*que)
#define FILENAME "c:\\person.dat" /*文件保存路径*/
/**********************************************************/
/* 定义数据结构*/
/*蛇节点*/
struct snake_base
{
int x;
int y;
};
/*队列节点 */
struct snake
{
struct snake_base data;
struct snake *next;
};
/*队列 */
struct queue
{
struct snake *front,*rear;
};
/*排行榜结构*/
struct person
{
char name[20];
int score;
};
/**********************************************************/
/* 定义全局变量 */
struct person per[5];
/**********************************************************/
/************************************************************************************/
/*自定义函数原型说明 */
void inques(struct queue *que,int x,int y); /*入队函数*/
void creatque(struct queue Q,int m); /*创建队列*/
struct snake_base delete(struct queue *que); /*出队函数,返回值为一个蛇节点*/
void *picture(int type); /*绘制方块函数*/
void draw(int x,int y,void *p); /*从图形缓存中读出数据,并显示在屏幕上*/
int search(int x,int y,struct snake *tmpHead); /*判断蛇头是否与蛇身相遇函数*/
void creat_menu(); /*产生主界面*/
void ReadFiles(); /*从文件中读取记录信息*/
void WriteFiles(struct person *); /*将记录写入文件中*/
void InitScoreFiles(); /*初始化记录文件*/
void CompareScore(struct person ); /*排行榜按分数进行排序*/
void pain_board(); /*绘制排行榜函数*/
void pain_gameover(); /*绘制游戏结束时的图形*/
void HelpMessage();
/***********************************************************************************/
/**********************************************************/
/*主函数*/
void main()
{
int gm=VGAHI,gd=VGA;
int mark,level,m,key,hi,lo,h;
int s1,m1,i,j,k,xn,yn,flag,bl;
long time;
unsigned s2;
void *p1,*p2;
char ch,string[3];
struct person CurPerson;
struct queue *que;
struct snake *q;
struct snake_base x1;
struct time t[1];
do
{
flag=1;bl=0;que=NULL; /*下面两行为初始化游戏变量*/
time=30000;mark=0;level=1;m=0;
gettime(t);/*初始化随机数*/
s1=t[0].ti_sec;
m1=t[0].ti_min;
s2=s1*m1;
srand(s2);
initgraph(&gd,&gm,"");
p1=picture(1);
p2=picture(0);
creatque(que,3);
creat_menu();
itoa(mark,string,10);
setcolor(15);
outtextxy(545,30,string);
itoa(level,string,10);
outtextxy(545,50,string);
q=Q.front->next;
for(k=0;k<=2;k++) /*遍历队列,绘制初始状态的蛇身*/
{
draw(q->data.x,q->data.y,p1);
if(k==2)
{ /*队尾节点为蛇头,取出赋值给i,j*/
i=q->data.x;j=q->data.y;
}
q=q->next;
}
do
{
xn=((unsigned long)rand())%31+1; /*随即产生两个坐标,作为新节点*/
yn=((unsigned long)rand()) -
2004-04-05
图书助理0.11版==发布 - [我的全部软件]
新增功能
1。增加自动提醒功能,在每天开机时,如果有图书已经超期或者将要到期,将会弹出窗口提醒
每天只提醒一次的哦,以后不管是重启还是重新开机,一天之内不会再提醒了
当然,你也可以启动程序查看自己的书籍情况
2。修正了一些Bug,稍微修改了一些界面元素
下载地址:下载图书助理0.11版
新功能截图:
-
鼠标轨迹记录器,一个很早期的作品,VB6开发,自我感觉--烂,呵呵
^_^,可以完全记录下鼠标的全部动作,并保存在文件中,然后播放
下载地址:下载鼠标轨迹播放器
-
密码管理器,VB6开发,嘿嘿,管理密码用的哦,一个很早期的作品,比较烂的啦
保存密码的文件只用了最简单的加密,所以安全性很低的咯
下载地址:下载密码管理器
-
这个是用C语言编写的贪吃蛇游戏哦,原创原创,TurboC下写的,去年的作品,有源代码的哦
源文件下载:贪吃蛇源文件下载
可执行文件下载:贪吃蛇游戏下载
截图
/**********************************************************/
/* 本程序在Turbo C 2.0下编译通过 */
/* */
/* 文件名: snake.c */
/**********************************************************/
/**********************************************************/
/* 程序中用到的库函数所在头文件应用 #include 命令包含进来 */
#include<graphics.h>
#include<bios.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<dos.h>
#include<conio.h>
#include<ctype.h>
/**********************************************************/
/* 定义符号常量 */
#define len sizeof(struct snake)
#define Q (*que)
#define FILENAME "c:\\person.dat" /*文件保存路径*/
/**********************************************************/
/* 定义数据结构*/
/*蛇节点*/
struct snake_base
{
int x;
int y;
};
/*队列节点 */
struct snake
{
struct snake_base data;
struct snake *next;
};
/*队列 */
struct queue
{
struct snake *front,*rear;
};
/*排行榜结构*/
struct person
{
char name[20];
int score;
};
/**********************************************************/
/* 定义全局变量 */
struct person per[5];
/**********************************************************/
/************************************************************************************/
/*自定义函数原型说明 */
void inques(struct queue *que,int x,int y); /*入队函数*/
void creatque(struct queue Q,int m); /*创建队列*/
struct snake_base delete(struct queue *que); /*出队函数,返回值为一个蛇节点*/
void *picture(int type); /*绘制方块函数*/
void draw(int x,int y,void *p); /*从图形缓存中读出数据,并显示在屏幕上*/
int search(int x,int y,struct snake *tmpHead); /*判断蛇头是否与蛇身相遇函数*/
void creat_menu(); /*产生主界面*/
void ReadFiles(); /*从文件中读取记录信息*/
void WriteFiles(struct person *); /*将记录写入文件中*/
void InitScoreFiles(); /*初始化记录文件*/
void CompareScore(struct person ); /*排行榜按分数进行排序*/
void pain_board(); /*绘制排行榜函数*/
void pain_gameover(); /*绘制游戏结束时的图形*/
void HelpMessage();
/***********************************************************************************/
/**********************************************************/
/*主函数*/
void main()
{
int gm=VGAHI,gd=VGA;
int mark,level,m,key,hi,lo,h;
int s1,m1,i,j,k,xn,yn,flag,bl;
long time;
unsigned s2;
void *p1,*p2;
char ch,string[3];
struct person CurPerson;
struct queue *que;
struct snake *q;
struct snake_base x1;
struct time t[1];
do
{
flag=1;bl=0;que=NULL; /*下面两行为初始化游戏变量*/
time=30000;mark=0;level=1;m=0;
gettime(t);/*初始化随机数*/
s1=t[0].ti_sec;
m1=t[0].ti_min;
s2=s1*m1;
srand(s2);
initgraph(&gd,&gm,"");
p1=picture(1);
p2=picture(0);
creatque(que,3);
creat_menu();
itoa(mark,string,10);
setcolor(15);
outtextxy(545,30,string);
itoa(level,string,10);
outtextxy(545,50,string);
q=Q.front->next;
for(k=0;k<=2;k++) /*遍历队列,绘制初始状态的蛇身*/
{
draw(q->data.x,q->data.y,p1);
if(k==2)
{ /*队尾节点为蛇头,取出赋值给i,j*/
i=q->data.x;j=q->data.y;
}
q=q->next;
}
do
{
xn=((unsigned long)rand())%31+1; /*随即产生两个坐标,作为新节点*/
yn=((unsigned long)rand()) -
用来管理和保存歌词的哦,还是比较好用的东东,推荐下载哦
采用ACCESS数据库,具体介绍可以看下面的下载地址里!嘿嘿
下载地址:下载歌词串串烧
截图
-
2004-04-02
发布=图书助理=测试版 - [我的全部软件]
刚刚完成的测试版,可能还有一定的bug,正在测试中
界面已经有了很大的变化哦,下载地址:下载图书助理
截图
-
2004-04-02
图书助理--正在开发中。。。 - [我的全部软件]
由于经常性的因为图书超期而被罚款,所以想做一个小东东来提醒自己
目前正在开发哦。。。。
放几张截图先。。[face02]
-
2004-04-01
完成了对Color Wheel的开发 - [我的全部软件]
终于完成了对ColorWheel的开发,强烈推荐下载,这是我写过最复杂的软件了
软件功能主要是网页配色、屏幕取色以及色彩管理等等
软件下载地址:下载ColorWheel
屏幕截图
共1页 1






