游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2283|回复: 4

初学者发问,关于DX9 API文档中的一些英文翻译~~~ 仁杰~~~~~

[复制链接]

1

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-3-10 10:25:00 | 显示全部楼层 |阅读模式
WinMain 函数中参数说明有这样写到:
hPrevInstance
[in] Handle to the previous instance of the application. For a Win32-based application, this parameter is always NULL.
If you need to detect whether another instance already exists, create a uniquely named mutex using the CreateMutex function. CreateMutex will succeed even if the mutex already exists, but the GetLastError function will return ERROR_ALREADY_EXISTS. This indicates that another instance of your application exists, because it created the mutex first.

lpCmdLine
[in] Pointer to a null-terminated string that specifies the command line for the application, excluding the program name
我想问一下这两段说的是什么,望各位达人指点下````谢谢@@

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2007-3-10 15:46:00 | 显示全部楼层

Re:初学者发问,关于DX9 API文档中的一些英文翻译~~~ 仁杰~

http://book.csdn.net/bookfiles/29/100294223.shtml

3

主题

113

帖子

147

积分

注册会员

Rank: 2

积分
147
发表于 2007-3-10 18:06:00 | 显示全部楼层

Re:初学者发问,关于DX9 API文档中的一些英文翻译~~~ 仁杰~

hPrevInstance
[in] Handle to the previous instance of the application. For a Win32-based application, this parameter is always NULL.
If you need to detect whether another instance already exists, create a uniquely named mutex using the CreateMutex function. CreateMutex will succeed even if the mutex already exists, but the GetLastError function will return ERROR_ALREADY_EXISTS. This indicates that another instance of your application exists, because it created the mutex first.

lpCmdLine
[in] Pointer to a null-terminated string that specifies the command line for the application, excluding the program name

//====================================
意思是:
hPrevInstance
[传入参数]当前应用程序的前一个实例句柄.在Win32应用程序中,这个参数通常设置为NULL.
如果你要判断另外一个实例是否依旧存在,可以使用CreateMutex方法去创建一个唯一命名的互斥体Mutex.即使互斥体Mutex已经存在,CreateMutex也会成功.但是(此时再调用)GetLastError方法会返回一个ERROR_ALREADY_EXISTS的值.根据这个,你就可以知道你的应用程序已经有另外一个实例了,因为它在之前已经创建了一个互斥体Mutex.

lpCmdLine
[传入参数]它是一个指向空结尾字符串的指针.这个字符串是传输给应用程序的一个命令参数.这里不需要写入程序的名称.


笃志按:

其实hPrevInstance 这参数早就没用了,别理它了,创建互斥体Mutex来判断是否已存在实例也没必要按MSDN中说的那样使用CreateMutex方法.恩,这里不好理解,我再详细说下吧.
个人理解"互斥体Mutex"就是一个线程,和CreateThread很类似的,区别是在于Thread仅仅能在一个进程中进行通信,而Mutex能在多个进程中通信.也正因为这一点,所以Mutex不能以句柄做为唯一标识,因为进程中是无法传递句柄的哦,所以,要区别Mutex,依靠的是它的名称,这也是为什么要创建一个"a uniquely named mutex"的原因了.但是要是没记错的话,CreateMutex方法是这样的,它会创建一个不存在的Mutex,但是若这个Mutex已经存在,它就会自动打开而不会新创建,仅仅是GetLastError的值发生了改变,如上文说明中就是使用这个方法来判断是否已有应用程序实例,而实际上,还有一个打开Mutex的方法,它仅会打开已有的Mutex,而不会生成新的Mutex,根据这个方法的返回bool值可以更方便的进行判断,不过因为在网吧,没办法查看MSDN,猜测是OpenMutex之类的函数吧.

lpCmdLine中的命令参数可能不好理解,那么你玩CS吗,呵呵,在它的快截方式属性中,添加一项 -console -win 的话,就会发现CS会窗口化运行,这就是命令参数了,呵呵,清楚了吧.

呵呵,以上都是个人见解,有错误的希望高手指正.
另:小吉..没必要帖子上还写个名字吧...狂汗....

1

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2007-3-10 22:57:00 | 显示全部楼层

Re:初学者发问,关于DX9 API文档中的一些英文翻译~~~ 仁杰~

我狂晕 你怎么来看见了```

1

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2007-3-10 23:06:00 | 显示全部楼层

Re:初学者发问,关于DX9 API文档中的一些英文翻译~~~ 仁杰~

额 写的有点深奥```我会慢慢理解的 谢了哈````额 带上名字你好认识我啊``哈哈
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 16:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表