麒麟子

~~

导航

<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

统计

常用链接

留言簿(12)

随笔分类

随笔档案

Friends

WebSites

积分与排名

最新随笔

最新评论

阅读排行榜

评论排行榜

#

[导入]网易程序笔试题

题目如下:

21     22    23    24    25    26

20     7      8      9      10    27

19     6      1      2      11    28

18     5      4      3      12    29

17    16     15    14    13    30

    如图:设“1”的坐标为(0,0) “7”的坐标为(-1,-1) 编写一个小程序,使程序做到输入坐标(X,Y)之后显示出相应的数字。我的程序,没有怎么调整,很粗糙,不过,实现就行了:#include <iostream>

using namespace std;

/* 

设“1”的坐标为(0,0) “7”的坐标为(-1,-1) 编写一个小程序,

使程序做到输入坐标(X,Y)之后显示出相应的数字。

*/

/************************************************************************

**算法:数字是围绕1“盘旋”, 移动的步进值是1,1,2,2,3,3,4,4,5,5,6,6……

**对于一个数,我们可以算出他移动的步数,然后和一个没有走完的偏移,如果恰好走完就是

**偏移为0。

**然后我们对于输入的值,我们模拟走过的路径来求值,步数表示已经走过而偏移表示要继续

**走偏移数目的步数

*************************************************************************/

enum X {RIGHT = 1, DOWM = 1,LEFT = -1, UP = -1};

/*

*get_attribution()函数取得输入值移动过几次用times表示,

*以及比每次移动的终点要多走的步数,用dif表示

*/

void get_attribution(int in_number, int &dif, int ×) {

    int i = 0;

     in_number--;

    while (in_number >= 0) {

         in_number = in_number - (i/2+1);

         times = i;

         i++;

        if (in_number >= 0) {

             dif = in_number;

         }

     }

}

int main()

{

    int a = 21; //输入一个数值,这里就不人机交互输入了

    int dif = 0, times = 0; // 起始偏移距离和次数

     get_attribution(a, dif, times);

     cout << "偏移" << dif << "中间走了" << times << "次" << endl;

    int x = 0, y = 0; //起始端点

    for (int i = 1; i <= times; i++) {

        switch (i%4) { //已经走过了一些步数

            case 0: //上移到下一个端点

                 y += UP *((i-1)/2+1);                   break;

            case 1: //右移到下一个端点

                 x += RIGHT * ((i-1)/2+1);               break;

            case 2: //下移到下一个端点

                 y += DOWM * ((i-1)/2+1);                break;

            case 3: //左移到下一个端点

                 x += LEFT * ((i-1)/2+1);                break;

         }

     }

    switch (times%4) { //继续完成要偏移的值

        case 3: //接下来的操作是上移,x不变,y减小

             y += UP * dif;              break;

        case 0: //接下来的操作是右移

             x += RIGHT * dif;           break;

        case 1: //接下来的操作是下移

             y += DOWM * dif;            break;

        case 2: //接下来的操作是左移

             x += LEFT * dif;            break;

     }

     cout << "("   <<   x << ", " << y << ")" << endl;

    return 0;

}

作者给出了自己的程序,太长我就引用了,也给出了人家的程序 ,挺不错,如下:#include <iostream>

#include <conio.h>

#include <math.h>

using namespace std;

int newVal(int x, int y)

{

    //以结点1为原点

    //以相邻两结点间的距离为单位(如结点2与结点3的之间线段)

    //结点7所在的正方形(由结点2、3、4、5、6、7、8、9构成)的边长

    //的一半为1,即结点7到原点1的最大投影距离为1。

    //于是由结点坐标,可以求出此结点所在的正方形的投影距离:

    int r = max(abs(x),abs(y));    

    

    //进行坐标变换,即把坐标原点移动到正方形的一个角结点上,

    //使整个正方形落在第一象限,例如,当r=1时,将把坐标原点从结点1

    //移动到结点7。

     x += r;

     y += r;

    //正方形的边长,等于投影距离的两倍

    int d = 2*r;

    int s;    //s为结点在自己的正方形的偏移量

    if (y == 0)

         s = 3*d + x;

    else if (x == 0)

         s = 2*d + (d-y);

    else if (y == d)

         s = d + (d-x);

    else

         s = y;

    //pow((r+1),2)为内层的结点数。

    //例如,结点10的内层由结点1和正方形A(2、3、4、5、7、8、10)构成

    //这些内层的总结点数恰为:(正方形A的边长+1)的平方,

    //因为:正方形A的边长 =(结点10所在正方形的半径-1)*2

    //故:内层结点数 = (结点10所在正方形的边长-1)的平方

   //结点值 = 在当前正方形的偏移量 + 内层的结点数

     s += pow((d-1),2);

    return s;

}

int main(int argc,char * argv[])

{

    int x, y;

     cout <<"请输入坐标(x y):";

    while (cin>>x>>y)

     {

     cout <<"坐标所在的结点值为:"<<f(x, y)<<endl;

     cout <<"请输入坐标(x y):";

     }

    return 0;

}

 

----------------------------------------------------------------------------------------------------------------------------------

这是我写的,算法请看二楼

#include<stdio.h>

int GetX(int x)//求(X,0)
   {
    int result=1,i=0;
    if (x==0) return result;
    else if (x>0)
    {
        for(i=0;i<x;i++)
        {
            result = result + 1+8*i;//通项公试. a(n) = a(n-1) + a(0) + d*(n-1)
        }
        return result;
     }
     else if(x<0)
     {
        for(i=0;i<-x;i++)
        {
            result = result + 5+8*i;
        }
        return result;
     }
}
int GetY(int y)//求(0,Y)
{
    int result=1,i=0;
    if (y==0) return result;
    else if (y>0)
    {
        for(i=0;i<y;i++)
        {
            result = result + 7+8*i;
        }
        return result;
     }
     else if(y<0)
     {
        for(i=0;i<-y;i++)
        {
            result = result + 3+8*i;
        }
        return result;
     }
}
int GetNum(int x,int y)//求(X,Y)对应的值
{
    if(abs(x)<=abs(y))
    {
        if(y<=0)
        return GetY(y)+x;
        else return GetY(y)-x;
     }
    else
    {
        if(x<=0)
        return GetX(x)-y;
        else return GetX(x)+y;
    }

}
       
void main()
{
    int x,y;
    while(1)
    {
    printf("please input (X,Y)\n");
    scanf("%d,%d",&x,&y);
    printf("The result is:%d\n",GetNum(x,y));
    }
    getch();

}


文章来源:http://ly-weiwei.blog.163.com/blog/static/72975283200811281154738

posted @ 2008-12-28 01:15 麒麟子 阅读(135) | 评论 (0)编辑 收藏

[导入][转贴]暴雪的霸王条款是否合理?

暴雪的霸王条款是否合理?

  类似于这样的霸王条款很多,但暴雪是个典型,谁让暴雪树大招风呢?暴雪蛮横地宣布游戏中的所有数据归暴雪所有,那么自然也包括玩家辛辛苦苦所得来的虚拟财产,暴雪这样做无疑是出于以下两点考虑:1,所有权归暴雪,那么自然而然地运营商便无权对玩家的财产进行干涉,在一定程度上可以对运营商形成一种威慑力:你干的好就接着干,干的不好把所有数据交出来我换代理或者干脆自己代理,我肯定不会受制于你;2,可以更有效地打击虚拟交易,维护游戏环境:因为所有权归我,所以如果你有违规行为,那么我就可以毫无顾虑封掉你的号,因为这一纸契约在,你去告也告不动。我国合同法明文规定:任何违背法律的合同、合约都是无效的。但是由于虚拟财产的归属在法律上还没有一个明确的界定,所以暴雪的这个霸王条款具有一种近似合法合同的效力,换句话说,如果玩家因为虚拟交易而被暴雪封号,那么他去法院告也是难以胜诉的。

  从暴雪自己的角度来说,推出这样的霸王条款是必要的,也是有一定合理性的,它有助于帮助暴雪规范玩家行为,从而给玩家创造一个舒适的游戏环境,但是不要忘记,暴雪是一个美国公司,这种霸王条款是一种美国式的思维,而中国的网游市场与美国的网游市场有很大不同,暴雪显然知道这一点,所以才会把WOW交给中国的代理商运营而不是自己运营。暴雪能够推出这一霸王条款是有足够的底气的:金字招牌够响亮、游戏够精品、对玩家的游戏体验够重视,一句话——不怕你因为这个霸王条款而不来玩,但换做国内产商,就未必适合这一霸王条款了。如果一个国内产商敢推出这种霸王条款,那么就意味着你必须要在服务上下足功夫才不至于让玩家觉得自己辛苦半天才到手的虚拟财产并不属于自己而离开游戏,这就表示玩家在遭受盗号之类的损失后你也需要全权负责追回,很显然99%的国内产商没有这个能力。

  其实一个最核心的问题便是在中国运营的游戏必须要能够迎合玩家口味,而不是去改变玩家口味,如果某个产商自大地认为现在的玩家口味不行,游戏方式不健康,我要通过这样的霸王条款来改变你,来帮你纠正自己的错误,那么OK,我从精神上支持你,但这样的做法毫无疑问会受到惨重的失败——所以WOW国内的代理商才没有把这个霸王条款当回事,中国玩家花4000RMB买个火鸡,哦不,凤凰坐骑,九城也没有封他号,因为他不敢!别说九城一个小小的代理,即使是暴雪,我也不相信他有这个魄力敢封,因为这其中牵涉的经济利益太多了。但是欧美又有所不同,这主要取决于玩家素质、游戏理念和收入的差异,很多欧美玩家一来不认为虚拟交易很合理,二来也没有必要,而大部分中国玩家恰恰相反,所以欧服玩家花7000欧元买的双刀贼号暴雪就敢封,而国服玩家花4000RMB买个鸟九城也不敢封的原因。


文章来源:http://ly-weiwei.blog.163.com/blog/static/729752832008112805451129

posted @ 2008-12-28 00:55 麒麟子 阅读(118) | 评论 (0)编辑 收藏

[导入]网络游戏程序员新手入门 [转]

原文地址: http://job.17173.com/content/2008-12-15/20081215172107441,1.shtml

游戏开发流程和部分分工

    流程:调研 -- 开发 -- 测试 -- 运营(我们公司的情况分析)

    公司类型介绍:游戏开发公司、游戏运营公司、游戏开发运营公司


开发部门构成:

策划(灵魂)8-10人

    主策划、执行策划、脚本策划、文案策划、关卡策划、数值策划、界面策划

程序(骨肉)8-10人

    主程、客户端引擎、服务器端引擎、逻辑程序员、3D程序、AI程序、物理程序、脚本程序、数据库程序、编辑器|工具程序员

美术(皮肤)20-30人

    人物原画、人物建模美术、材质贴图美术、人物动作美术、场景原画、场景建模美术、UI界面,图标平面美术、动画CG术、特效美术、音乐音效


其他管理部门

    1.开发组长(部门协调);2.项目经理(项目整体把控)


通常开发流程是:

    项目经理(产品经理):立项。(前期预估项目成本,风险,市场情况。中期重新评估)

    主策划:游戏原型策划。(消费群体,能力,产品定位,游戏风格。)

    执行策划:写初部策划案。(将主策的想法具体的细节实现,提前3-4月)

    美术,程序:实现(基本是同时动工)

1.主要构架,测试主逻辑,测试引擎。

2.主功能,(图形,脚本,AI,数据库,网络的测试)

3.主逻辑模块,(战斗,聊天,换线,任务)

4. 附逻辑模块,(好友,队伍,小地图等等)

5.游戏整和调试,(关卡串联,置入音效,策划数值调整)

    宣传。(游戏官网以及周边的游戏功略说明书,游戏截图宣传等)

    技术测试:白盒内部测试。代码效率,可扩展性,DEBUG功能移除,封包,加密测试。

a测试:黑盒测试部测试。游戏内部测试(功能性测试)

b测试:黑盒BEBUG测试。主要进行各种不合常理的行为操作的测试,和GM功能测试。

内测:重点测试服务器压力。

公测:获取用户群的信息表,已确定游戏的一些商业运营方式

当代游戏的特点以及技术概述

整体行业近况:

    1、运营成本增加,盈利模式趋同。
    由于国内游戏开发环境已经逐步完善,游戏与游戏之间,游戏公司与游戏公司之间的竞争加剧,游戏的商业化运营更加正式,做为游戏的重要的宣传手段,运营的投入也大幅增加,于是便分化出了游戏运营商和开发商。根据Ireasch的2007年报告来说,中国67%游戏已经是PayToPlay转化为FreeToPlay,典型的有盛大的招牌《传奇》,都转为免费游戏+收费道具。

    2、产品老化严重,用户忠诚度很低。
    用户:蝗虫族。2/3以上玩家兼玩2种或2种以上的不同类型游戏。平均蜜月期不足1年半,国外玩家平均蜜月期为3年3月。新的网游很多,但是能够冲破 WOW,传奇,西游 三大霸主的地位难度还是很大。很多游戏是热门抄作期一过,就完了。

    3、游戏产品类型五分天下,玩家群分化严重。
    回合制MMORPG:大话,梦幻,问道,水浒Q传
    2D ARPG:传奇,征途
    3D ARPG:魔兽。热血江湖,RF,天堂2,天龙八部
    休闲游戏:跑跑卡丁车,劲舞团,街头篮球
    棋牌类:QQ游戏,联众

    4、跨行业合作性强。
    可口可乐,康师傅,百事可乐均进入游戏合作推广,游戏作为一种宣传媒体,这种宣传模式越来越被认可)


    5、整体来说:中国网络游戏行业,面临机会和挑战并存。
    一部分厂商凭借稳固高质量的游戏产品和务实的运营开始崭露头角,一部分则因为产品运营原因,关门大吉。网游市场多极化发展,用户拥有了广泛的选择,对产品质量和用户氛围也越加注重,游戏公司必须和市场一起成熟起来,才能适应今后的发展。

 

游戏程序发展方向:

1.代码重用性。出现引擎。

2.OO思想和效率的兼顾。C++语言的流行。

3.游戏可扩展性,灵活性。脚本语言的流行。

4.硬件的发展。3D将成为主流,虚拟现实VR,Web3D也大肆发展。

5.网络的发展。网络游戏的适用范围越来越大。分布式服务器的流行。(EVE)

6.AI,物理在游戏中占的比例越来越大。

1:引擎的作用。

    将不同游戏的共同功能抽象出来,做为核心底层的封装的代码就是引擎。

    最底层大致包括:计时器,内存管理,错误处理,输入设备处理,网络通讯,IO输入,基本的数据结构,取随机数大小值等基本数学方法函数,不同格式的文件数据类型读取。

    稍高一层大致包括:音效管理,网络通讯管理,UI管理,对象管理,寻路,场景管理,渲染器管理,脚本管理,物理模拟库,AI状态机,数据库管理,图形管线,角色对象管理系统等。

    若是3D游戏的话,在图形图象部分还要多出一些部分:Shader,粒子系统,渲染对象管理,2D精灵系统,地形,BSP树拣选,八叉树拣选,包围盒,摄象机,动态模糊,动态光照,碰撞检测,鼠标拣选,HDR等。


2:C++语言的发展。

    相对C来说,OO思想更符合现在大型项目的开发思路,在效率上C++较之JAVA,C#等语言效率很高,可方便的嵌入汇编优化。

    汇编:快,超快又小巧。要是天才汇编程序员,比其他语言程序员做出的程序强大的多的多。可以学习起来极难,编写一个程序,需要极多的代码。完全没有任何移植性可言。我们不可能用它来做一个游戏,但是,局部可以汇编优化。MMX指令集。

    VB:容易上手和学习,但是没有由于照抄BASIC,丝毫没有结构感,OO表现难度过大。即时编辑和良好的插件还是很不错。但是应用系统太大,运行时间过长,运行时还需要一个1.4M左右的运行库,另外,支持且仅支持Windows,他是完全基于WindowsAPI开发。

    JAVA:强大。J2EE的企业级开发库支持的细节是非常强大的。但是做中小型项目又实在没有必要,J2SE的功能又凌杂的有些可怜。纯粹且完全的OO语言,使得非面向对象的思想完全活不下去。正因为JAVA的强大细节把握性,导致JAVA代码通常很冗长,没有做到轻便化。而且!最重要的是,不支持操作符重载,实在非常烦人。所谓的平台无关性也是一种说法而已,它本身就需要一个JVM运行环境,环境本身就是一个平台。JAVA的设计目的是安全性,可移植性,于是对内存地址访问被CUT了,所以在性能上容易有一些损失。总之一句话,它很象一个对C++的封装。

    C#类似JAVA不重复多说。


3:脚本语言。

    工作流程:脚本 -- 行处理器(词法分析,语法分析) -- 字节码流 – 解释器

    特点:容易学习,代码可维护性强。

    Lua,Pyth,Ruby,Perl各有优势,但Lua以轻量化,与C结合紧密出众,获得亲睐。

    Ruby:慢, Debug难度较大,没有成熟的作品(RM特殊),在日本流行度较高。

    Lua:轻量化,与C结合紧密。但教程极少,接口设计不够巧妙,也没有对大型应用设计出良好的支持。但游戏开发已经足够了。WOW,大话梦幻等。

    Python: 老的脚本语言了。强大,有极高的阅读性,很好的扩展性,开发人员可以用C++等语言对Python本身进行扩展。当我们进行比较大型项目,将其拆分为大量单元,交由多数人进行开发时,阅读性,高效性,可维护性是脚本语言比较重视的部分,Python在这里做的很好,所以,Google,微软,Nokia都用Python.


4:3D成为主流。

    3D的画面表现力比2D强,仿真性强,给人带来的代入感好,随着硬件的更新,3D是一种不可抗拒的趋势。


5:分布式服务器结构。

    单服务器结构,开发效率快,逻辑简单,但是容量小,随着网络的发展,已经被抛弃。1500-2000

    多服务器结构,可分为按地图划分服务器和按功能划分服务器。

    按地图划分为服务器,大致会分为 世界服务器,地图服务器,网关服务器。当负责分配的世界服务器出现鼓掌,将使所有的地图服务器失效,因为数据是依照地图独立存储的,当某一地图服务器挂掉,将可能失去大量的数据。

    按功能划分服务器是符合OO思想的一种设计,将一些密集型的功能分离开来,单独由一个服务器进行控制,这样的话,当一个服务器出现问题时,不会影响其他模块的运行,而且扩充性也比较优秀简单。

    分布式服务器构架:支持远程对象调用,动态的分布节点吞吐,保证服务器受压平衡。但是在开发难度上较大。


6:AI,物理模拟在国内网络游戏开发中并没有过多的使用该功能。带过


    补充:该系列文档为某志为公司新人准备的培训底稿,因为是计划自己查看,以便口头讲述,所以写的并不充分,仅做为提纲提示自己使用,若有不清或错误,欢迎指出。

 

新人程序员应当熟悉的资料

    我们来谈一下,需要大致了解的东西。

    【3D Graphics API 】
    DirectX 9.0 SDK - Direct3D 
     OpenGL 2.0 
    【2D API】 
    DirectX 9.0 SDK - DirectMedia 
    Win32 GDI 
    【Input Device】 
    DirectX 9.0 SDK - DirectInput 
    【Audio】 
    DirectX 9.0 SDK - DirectSound / Direct3DSound / DirectMedia 
    OpenAL 
    【OS API】 
    Win32 SDK 
    MFC 
    【Network】 
    DirectX 9.0 SDK - DirectPlay 
    Socket library

    注意,Lib库和引擎和API库是不同的。

    Lib重点是拿来用它的接口的,大部分内部结构和命名比较糟糕,不推荐学习,有兴趣的话可以学习其中的算法。

    API库重点是拿来用它的接口函数,对于内部结构,相当多的都被封装了,结构性和命名更加糟糕,例如,”_”是底层库专用,”__”是编译器专用。建议熟悉API的大致功能即可,对于其中的参数和API名称,没必要死记。

    引擎是最值得研究的,它的重点是设计思想,对于项目开发来说,需要把作者的设计思路,和接口设计完全弄清楚才算合格。


文章来源:http://ly-weiwei.blog.163.com/blog/static/729752832008112713332679

posted @ 2008-12-27 13:34 麒麟子 阅读(124) | 评论 (0)编辑 收藏

[导入]WIN API函数名索引

大家都学过,只是有些想必都没有用过,甚至没见过吧.这里列出了功能和函数名.为的是需要的时候很方便.

注(不是MFC的)

1. API之网络函数

WNetAddConnection 创建同一个网络资源的永久性连接

WNetAddConnection2 创建同一个网络资源的连接

WNetAddConnection3 创建同一个网络资源的连接

WNetCancelConnection 结束一个网络连接

WNetCancelConnection2 结束一个网络连接

WNetCloseEnum 结束一次枚举操作

WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接

WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接

WNetEnumResource 枚举网络资源

WNetGetConnection 获取本地或已连接的一个资源的网络名称

WNetGetLastError 获取网络错误的扩展错误信息

WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称

WNetGetUser 获取一个网络资源用以连接的名字

WNetOpenEnum 启动对网络资源进行枚举的过程

2. API之消息函数

BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口

GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置

GetMessageTime 取得消息队列中上一条消息处理完毕时的时间

PostMessage 将一条消息投递到指定窗口的消息队列

PostThreadMessage 将一条消息投递给应用程序

RegisterWindowMessage 获取分配给一个字串标识符的消息编号

ReplyMessage 答复一个消息

SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口

SendMessageCallback 将一条消息发给窗口

SendMessageTimeout 向窗口发送一条消息

SendNotifyMessage 向窗口发送一条消息

3. API之文件处理函数

CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等

CompareFileTime 对比两个文件的时间

CopyFile 复制文件

CreateDirectory 创建一个新目录

CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台

CreateFileMapping 创建一个新的文件映射对象

DeleteFile 删除指定文件

DeviceIoControl 对设备执行指定的操作

DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值

FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值

FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间

FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构

FindClose 关闭由FindFirstFile函数创建的一个搜索句柄

FindFirstFile 根据文件名查找文件

FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件

FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区

FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘

GetBinaryType 判断文件是否可以执行

GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数

GetCurrentDirectory 在一个缓冲区中装载当前目录

GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量

GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息

GetDriveType 判断一个磁盘驱动器的类型

GetExpandedName 取得一个压缩文件的全名

GetFileAttributes 判断指定文件的属性

GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制

GetFileSize 判断文件长度

GetFileTime 取得指定文件的时间信息

GetFileType 在给出文件句柄的前提下,判断文件类型

GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息

GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区

GetFullPathName 获取指定文件的完整路径名

GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母

GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径

GetOverlappedResult 判断一个重叠操作当前的状态

GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值

GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表

GetPrivateProfileString 为初始化文件中指定的条目取得字串

GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值

GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表

GetProfileString 为win.ini初始化文件中指定的条目取得字串

GetShortPathName 获取指定文件的短路径名

GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名

GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用

GetTempPath 获取为临时文件指定的路径

GetVolumeInformation 获取与一个磁盘卷有关的信息

GetWindowsDirectory 获取Windows目录的完整路径名

hread 参考lread

hwrite 参考lwrite函数

lclose 关闭指定的文件

lcreat 创建一个文件

llseek 设置文件中进行读写的当前位置

LockFile 锁定文件的某一部分,使其不与其他应用程序共享

LockFileEx 与LockFile相似,只是它提供了更多的功能

lopen 以二进制模式打开指定的文件

lread 将文件中的数据读入内存缓冲区

lwrite 将数据从内存缓冲区写入一个文件

LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件

LZCopy 复制一个文件

LZInit 这个函数用于初始化内部缓冲区

LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件

LZRead 将数据从文件读入内存缓冲区

LZSeek 设置一个文件中进行读写的当前位置

MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间

MoveFile 移动文件

OpenFile 这个函数能执行大量不同的文件操作

OpenFileMapping 打开一个现成的文件映射对象

QueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况

ReadFile 从文件中读出数据

ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调

RegCloseKey 关闭系统注册表中的一个项(或键)

RegConnectRegistry 访问远程系统的部分注册表

RegCreateKey 在指定的项下创建或打开一个项

RegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数

RegDeleteKey 删除现有项下方一个指定的子项

RegDeleteValue 删除指定项下方的一个值

RegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx

RegEnumKeyEx 枚举指定项下方的子项

RegEnumValue 枚举指定项的值

RegFlushKey 将对项和它的子项作出的改动实际写入磁盘

RegGetKeySecurity 获取与一个注册表项有关的安全信息

RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息

RegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制

RegOpenKey 打开一个现有的注册表项

RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数

RegQueryInfoKey 获取与一个项有关的信息

RegQueryValue 取得指定项或子项的默认(未命名)值

RegQueryValueEx 获取一个项的设置值

RegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息

RegRestoreKey 从一个磁盘文件恢复注册表信息

RegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件

RegSetKeySecurity 设置指定项的安全特性

RegSetValue 设置指定项或子项的默认值

RegSetValueEx 设置指定项的值

RegUnLoadKey 卸载指定的项以及它的所有子项

RemoveDirectory 删除指定目录

SearchPath 查找指定文件

SetCurrentDirectory 设置当前目录

SetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾

SetFileAttributes 设置文件属性

SetFilePointer 在一个文件中设置当前的读写位置

SetFileTime 设置文件的创建、访问及上次修改时间

SetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果

SetVolumeLabel 设置一个磁盘的卷标(Label)

SystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构

UnlockFile 解除对一个文件的锁定

UnlockFileEx 解除对一个文件的锁定

UnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射

VerFindFile 用这个函数决定一个文件应安装到哪里

VerInstallFile 用这个函数安装一个文件

VerLanguageName 这个函数能根据16位语言代码获取一种语言的名称

VerQueryValue 这个函数用于从版本资源中获取信息

WriteFile 将数据写入一个文件

WriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调

WritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值

WritePrivateProfileString 在初始化文件指定小节内设置一个字串

WriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值

WriteProfileString 在Win.ini初始化文件指定小节内设置一个字串


文章来源:http://ly-weiwei.blog.163.com/blog/static/72975283200811270422286

posted @ 2008-12-27 00:42 麒麟子 阅读(181) | 评论 (0)编辑 收藏

[导入]Symbian系统体系结构

     摘要: Symbian系统体系结构 在symbian os上运行的四种软件  应用程序 application 服务     server 引擎     engine 内核     kernel Symbian系统使...  阅读全文

posted @ 2008-12-26 23:59 麒麟子 阅读(144) | 评论 (0)编辑 收藏

仅列出标题
共38页: First 30 31 32 33 34 35 36 37 38