【转】虚拟键码

虚拟键码保存在WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN和WM_SYSKEYUP讯息的wParam参数中。此代码标识按下或释放的键。

中文名

虚拟键码

保存在

WM_KEYDOWN等

程    序

Windows程序

代码标识

按下或释放的键

目录

  1. 1 简介
  2. 2 虚拟键表
  3. ▪ 完整的虚拟键码表
  4. ▪ 键盘的扫描码、虚拟码:

简介

编辑

虚拟指的是假定存在于思想中而不是现实世界中的一些事物,也只有熟练使用DOS组合语言编写应用程式的程式写作者才有可能指出,为什么对Windows键盘处理如此基本的键码是虚拟的而不是真实的。

对於早期的程式写作者来说,真实的键码由实际键盘硬体产生。在Windows文件中将这些键码称为“扫描码(scan codes)”。在IBM相容机种上,扫描码16是Q键,17是W键,18是E、19是R,20是T,21是Y等等。这时您会发现,扫描码是依据键盘的实际布局的。Windows开发者认为这些代码过於与设备相关了,於是他们试图通过定义所谓的虚拟键码,以便经由与装置无关的方式处理键盘。其中一些虚拟键码不能在IBM相容机种上产生,但可能会在其他制造商生产的键盘中找到,或者在未来的键盘上找到。

您使用的大多数虚拟键码的名称在WINUSER.H头文件中都定义为以VK_开头。表1列出了这些名称和数值(十进位和十六进位),以及与虚拟键相对应的IBM相容机种键盘上的键。下表也标出了Windows执行时是否需要这些键。下表还按数位顺序列出了虚拟键码。

前四个虚拟键码中有三个指的是鼠标键:

表1

十进制十六进制winuser.h识别字IBM相容键盘对应键

1

0x01

VK_LBUTTON

鼠标左键

2

0x02

VK_RBUTTON

鼠标右键

3

0x03

VK_CANCEL

Ctrl-Break

4

0x04

VK_MBUTTON

鼠标中键

您永远都不会从键盘讯息中获得这些鼠标键代码。VK_CANCEL代码是一个虚拟键码,它包括同时按下两个键(Ctrl-Break)。Windows应用程序通常不使用此键。

表2中的键——Backspace、Tab、Enter、Esc和空格——通常用于Windows程序。不过,Windows一般用字元讯息(而不是键盘讯息)来处理这些键。

表2

十进制十六进制winuser.h识别字IBM相容键盘对应键

8

0x08

VK_BACK

Backspace

9

0x09

VK_TAB

Tab

12

0x0C

VK_CLEAR

NumLock关闭时的数字键盘5

13

0x0D

VK_RETURN

Enter

16

0x10

VK_SHIFT

Shift

17

0x11

VK_CONTROL

Ctrl

18

0x12

VK_MENU

Alt

19

0x13

VK_PAUSE

Pause

20

0x14

VK_CAPITAL

Caps Lock

27

0x1B

VK_ESCAPE

Esc

32

0x20

VK_SPACE

空格

另外,Windows程序通常不需要监视Shift、Ctrl或Alt键的状态。

表3列出的前八个码可能是与VK_INSERT和VK_DELETE一起最常用的虚拟键码:

表3

十进制十六进制winuser.h识别字IBM相容键盘对应键

33

0x21

VK_PRIOR

Page Up

34

0x22

VK_NEXT

Page Down

35

0x23

VK_END

End

36

0x24

VK_HOME

Home

37

0x25

VK_LEFT

左箭头

38

0x26

VK_UP

上箭头

39

0x27

VK_RIGHT

右箭头

40

0x28

VK_DOWN

下箭头

41

0x29

VK_SELECT

 

42

0x2A

VK_PRINT

 

43

0x2B

VK_EXECUTE

 

44

0x2C

VK_SNAPSHOT

Print Screen

45

0x2D

VK_INSERT

Insert

46

0x2E

VK_DELETE

Delete

47

0x2F

VK_HELP

 

注意,许多名称(例如VK_PRIOR)Windows也包括在主键盘上的字母和数位键的虚拟键码(数字键盘将单独处理)。

表4

十进制

十六进制

WINUSER.H识别字

IBM相容键盘

48-57

30-39

主键盘上的0到9

65-90

41-5A

A到Z

注意,数字和字母的虚拟键码是ASCII码。Windows程序几乎从不使用这些虚拟键码;实际上,程序使用的是ASCII码字元的字元讯息。

表5所示的代码是由Microsoft Natural Keyboard及其相容键盘产生的:

表5

十进制

十六进制

WINUSER.H识别字

IBM相容键盘

91

5B

VK_LWIN

左Windows键

92

5C

VK_RWIN

右Windows键

Windows用VK_LWIN和VK_RWIN键打开“开始”菜单或者(在以前的版本中)启动“工作管理员程序”。这两个都可以用于登录或登出Windows(只在Microsoft Windows NT中有效),或者登录或登出网路(在Windows for Applications中)。应用程序能够通过显示辅助资讯或者当成快捷键看待来处理application键。

表6所示的代码用于小键盘上的键(如果有的话):

表6

十进制

十六进制

WINUSER.H识别字

IBM相容键盘

96-105

60-69

VK_NUMPAD0到VK_

NUMPAD9 NumLock打开时数字键盘上的0到9

106

6A

VK_MULTIPLY

数字键盘上的*

107

6B

VK_ADD

数字键盘上的+

108

6C

VK_SEPARATOR

 

109

6D

VK_SUBTRACT

数字键盘上的-

110

6E

VK_DECIMAL

数字键盘上的.

111

6F

VK_DIVIDE

数字键盘上的/

最後,虽然多数的键盘都有12个功能键,但Windows只需要10个,而位元旗标却有24个。另外,程式通常用功能键作为键盘加速键,这样,它们通常不处理表7所示的按键:

表7

十进制

十六进制

WINUSER.H识别字

IBM相容键盘

112-121

70-79

VK_F1到VK_F10

功能键F1到F10

122-135

7A-87

VK_F11到VK_F24

功能键F11到F24

144

90

VK_NUMLOCK

Num Lock

145

91

VK_SCROLL

Scroll Lock

另外,还定义了一些其他虚拟键码,但它们只用于非标准键盘上的键,或者通常在大型主机终端机上使用的键。查看/ Platform SDK / User Interface Services / User Input / Virtual-Key Codes,可得到完整的列表。

虚拟键表

编辑

虚拟键码

对应值

对应键

VK_LBUTTON

1

鼠标左键

VK_RBUTTON

2

鼠标右键

VK_CANCEL

3

Cancel

VK_MBUTTON

4

鼠标中键

VK_XBUTTON1

5

鼠标后退键

VK_XBUTTON2

6

鼠标前进键

VK_BACK

8

Backspace

VK_TAB

9

Tab

VK_CLEAR

12

Clear

VK_RETURN

13

Enter

VK_SHIFT

16

Shift

VK_CONTROL

17

Ctrl

VK_MENU

18

Alt

VK_PAUSE

19

Pause

VK_CAPITAL

20

Caps Lock

VK_KANA

21

 

VK_HANGUL

21

 

VK_JUNJA

23

 

VK_FINAL

24

 

VK_HANJA

25

 

VK_KANJI

25*

 

VK_ESCAPE

27

Esc

VK_CONVERT

28

 

VK_NONCONVERT

29

 

VK_ACCEPT

30

 

VK_MODECHANGE

31

 

VK_SPACE

32

Space

VK_PRIOR

33

Page Up

VK_NEXT

34

Page Down

VK_END

35

End

VK_HOME

36

Home

VK_LEFT

37

Left Arrow

VK_UP

38

Up Arrow

VK_RIGHT

39

Right Arrow

VK_DOWN

40

Down Arrow

VK_SELECT

41

Select

VK_PRINT

42

Print

VK_EXECUTE

43

Execute

VK_SNAPSHOT

44

Snapshot

VK_INSERT

45

Insert

VK_DELETE

46

Delete

VK_HELP

47

Help

 

48

0

 

49

1

 

50

2

 

51

3

 

52

4

 

53

5

 

54

6

 

55

7

 

56

8

 

57

9

 

65

A

 

66

B

 

67

C

 

68

D

 

69

E

 

70

F

 

71

G

 

72

H

 

73

I

 

74

J

 

75

K

 

76

L

 

77

M

 

78

N

 

79

O

 

80

P

 

81

Q

 

82

R

 

83

S

 

84

T

 

85

U

 

86

V

 

87

W

 

88

X

 

89

Y

 

90

Z

VK_LWIN

91

左WIN键

VK_RWIN

92

右WIN键

VK_APPS

93

应用程序键

VK_SLEEP

95

睡眠键

VK_NUMPAD0

96

小键盘 0

VK_NUMPAD1

97

小键盘 1

VK_NUMPAD2

98

小键盘 2

VK_NUMPAD3

99

小键盘 3

VK_NUMPAD4

100

小键盘 4

VK_NUMPAD5

101

小键盘 5

VK_NUMPAD6

102

小键盘 6

VK_NUMPAD7

103

小键盘 7

VK_NUMPAD8

104

小键盘 8

VK_NUMPAD9

105

小键盘 9

VK_MULTIPLY

106

小键盘 *

VK_ADD

107

小键盘 +

VK_SEPARATOR

108

小键盘 Enter

VK_SUBTRACT

109

小键盘 -

VK_DECIMAL

110

小键盘 .

VK_DIVIDE

111

小键盘 /

VK_F1

112

F1

VK_F2

113

F2

VK_F3

114

F3

VK_F4

115

F4

VK_F5

116

F5

VK_F6

117

F6

VK_F7

118

F7

VK_F8

119

F8

VK_F9

120

F9

VK_F10

121

F10

VK_F11

122

F11

VK_F12

123

F12

VK_F13

124

 

VK_F14

125

 

VK_F15

126

 

VK_F16

127

 

VK_F17

128

 

VK_F18

129

 

VK_F19

130

 

VK_F20

131

 

VK_F21

132

 

VK_F22

133

 

VK_F23

134

 

VK_F24

135

 

VK_NUMLOCK

144

Num Lock

VK_SCROLL

145

Scroll

VK_LSHIFT

160

左shift

VK_RSHIFT

161

右shift

VK_LCONTROL

162

 

VK_RCONTROL

163

 

VK_LMENU

164

 

VK_RMENU

165

 

VK_BROWSER_BACK

166

 

VK_BROWSER_FORWARD

167

 

VK_BROWSER_REFRESH

168

 

VK_BROWSER_STOP

169

 

VK_BROWSER_SEARCH

170

 

VK_BROWSER_FAVORITES

171

 

VK_BROWSER_HOME

172

 

VK_VOLUME_MUTE

173

VolumeMute

VK_VOLUME_DOWN

174

VolumeDown

VK_VOLUME_UP

175

VolumeUp

VK_MEDIA_NEXT_TRACK

176

 

VK_MEDIA_PREV_TRACK

177

 

VK_MEDIA_STOP

178

 

VK_MEDIA_PLAY_PAUSE

179

 

VK_LAUNCH_MAIL

180

 

VK_LAUNCH_MEDIA_SELECT

181

 

VK_LAUNCH_APP1

182

 

VK_LAUNCH_APP2

183

 

VK_OEM_1

186

; :

VK_OEM_PLUS

187

= +

VK_OEM_COMMA

188

,

VK_OEM_MINUS

189

- _

VK_OEM_PERIOD

190

.

VK_OEM_2

191

/ ?

VK_OEM_3

192

` ~

VK_OEM_4

219

[ {

VK_OEM_5

220

\ |

VK_OEM_6

221

] }

VK_OEM_7

222

' "

VK_OEM_8

223

 

VK_OEM_102

226

 

VK_PACKET

231

 

VK_PROCESSKEY

229

 

VK_ATTN

246

 

VK_CRSEL

247

 

VK_EXSEL

248

 

VK_EREOF

249

 

VK_PLAY

250

 

VK_ZOOM

251

 

VK_NONAME

252

 

VK_PA1

253

 

VK_OEM_CLEAR

254

 

完整的虚拟键码表

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

/*

*VirtualKeys,StandardSet

*/

#defineVK_LBUTTON0x01

#defineVK_RBUTTON0x02

#defineVK_CANCEL0x03

#defineVK_MBUTTON0x04/*NOTcontiguouswithL&RBUTTON*/

 

#if(_WIN32_WINNT>=0x0500)

#defineVK_XBUTTON10x05/*NOTcontiguouswithL&RBUTTON*/

#defineVK_XBUTTON20x06/*NOTcontiguouswithL&RBUTTON*/

#endif/*_WIN32_WINNT>=0x0500*/

 

/*

*0x07:unassigned

*/

 

#defineVK_BACK0x08

#defineVK_TAB0x09

 

/*

*0x0A-0x0B:reserved

*/

 

#defineVK_CLEAR0x0C

#defineVK_RETURN0x0D

 

#defineVK_SHIFT0x10

#defineVK_CONTROL0x11

#defineVK_MENU0x12

#defineVK_PAUSE0x13

#defineVK_CAPITAL0x14

 

#defineVK_KANA0x15

#defineVK_HANGEUL0x15/*oldname-shouldbehereforcompatibility*/

#defineVK_HANGUL0x15

#defineVK_JUNJA0x17

#defineVK_FINAL0x18

#defineVK_HANJA0x19

#defineVK_KANJI0x19

 

#defineVK_ESCAPE0x1B

 

#defineVK_CONVERT0x1C

#defineVK_NONCONVERT0x1D

#defineVK_ACCEPT0x1E

#defineVK_MODECHANGE0x1F

 

#defineVK_SPACE0x20

#defineVK_PRIOR0x21

#defineVK_NEXT0x22

#defineVK_END0x23

#defineVK_HOME0x24

#defineVK_LEFT0x25

#defineVK_UP0x26

#defineVK_RIGHT0x27

#defineVK_DOWN0x28

#defineVK_SELECT0x29

#defineVK_PRINT0x2A

#defineVK_EXECUTE0x2B

#defineVK_SNAPSHOT0x2C

#defineVK_INSERT0x2D

#defineVK_DELETE0x2E

#defineVK_HELP0x2F

 

/*

*VK_0-VK_9arethesameasASCII'0'-'9'(0x30-0x39)

*0x40:unassigned

*VK_A-VK_ZarethesameasASCII'A'-'Z'(0x41-0x5A)

*/

 

#defineVK_LWIN0x5B

#defineVK_RWIN0x5C

#defineVK_APPS0x5D

 

/*

*0x5E:reserved

*/

 

#defineVK_SLEEP0x5F

 

#defineVK_NUMPAD00x60

#defineVK_NUMPAD10x61

#defineVK_NUMPAD20x62

#defineVK_NUMPAD30x63

#defineVK_NUMPAD40x64

#defineVK_NUMPAD50x65

#defineVK_NUMPAD60x66

#defineVK_NUMPAD70x67

#defineVK_NUMPAD80x68

#defineVK_NUMPAD90x69

#defineVK_MULTIPLY0x6A

#defineVK_ADD0x6B

#defineVK_SEPARATOR0x6C

#defineVK_SUBTRACT0x6D

#defineVK_DECIMAL0x6E

#defineVK_DIVIDE0x6F

#defineVK_F10x70

#defineVK_F20x71

#defineVK_F30x72

#defineVK_F40x73

#defineVK_F50x74

#defineVK_F60x75

#defineVK_F70x76

#defineVK_F80x77

#defineVK_F90x78

#defineVK_F100x79

#defineVK_F110x7A

#defineVK_F120x7B

#defineVK_F130x7C

#defineVK_F140x7D

#defineVK_F150x7E

#defineVK_F160x7F

#defineVK_F170x80

#defineVK_F180x81

#defineVK_F190x82

#defineVK_F200x83

#defineVK_F210x84

#defineVK_F220x85

#defineVK_F230x86

#defineVK_F240x87

 

/*

*0x88-0x8F:unassigned

*/

 

#defineVK_NUMLOCK0x90

#defineVK_SCROLL0x91

 

/*

*NECPC-9800kbddefinitions

*/

#defineVK_OEM_NEC_EQUAL0x92//'='keyonnumpad

 

/*

*Fujitsu/OASYSkbddefinitions

*/

#defineVK_OEM_FJ_JISHO0x92//'Dictionary'key

#defineVK_OEM_FJ_MASSHOU0x93//'Unregisterword'key

#defineVK_OEM_FJ_TOUROKU0x94//'Registerword'key

#defineVK_OEM_FJ_LOYA0x95//'LeftOYAYUBI'key

#defineVK_OEM_FJ_ROYA0x96//'RightOYAYUBI'key

 

/*

*0x97-0x9F:unassigned

*/

 

/*

*VK_L*&VK_R*-leftandrightAlt,CtrlandShiftvirtualkeys.

*UsedonlyasparameterstoGetAsyncKeyState()andGetKeyState().

*NootherAPIormessagewilldistinguishleftandrightkeysinthisway.

*/

#defineVK_LSHIFT0xA0

#defineVK_RSHIFT0xA1

#defineVK_LCONTROL0xA2

#defineVK_RCONTROL0xA3

#defineVK_LMENU0xA4

#defineVK_RMENU0xA5

 

#if(_WIN32_WINNT>=0x0500)

#defineVK_BROWSER_BACK0xA6

#defineVK_BROWSER_FORWARD0xA7

#defineVK_BROWSER_REFRESH0xA8

#defineVK_BROWSER_STOP0xA9

#defineVK_BROWSER_SEARCH0xAA

#defineVK_BROWSER_FAVORITES0xAB

#defineVK_BROWSER_HOME0xAC

 

#defineVK_VOLUME_MUTE0xAD

#defineVK_VOLUME_DOWN0xAE

#defineVK_VOLUME_UP0xAF

#defineVK_MEDIA_NEXT_TRACK0xB0

#defineVK_MEDIA_PREV_TRACK0xB1

#defineVK_MEDIA_STOP0xB2

#defineVK_MEDIA_PLAY_PAUSE0xB3

#defineVK_LAUNCH_MAIL0xB4

#defineVK_LAUNCH_MEDIA_SELECT0xB5

#defineVK_LAUNCH_APP10xB6

#defineVK_LAUNCH_APP20xB7

 

#endif/*_WIN32_WINNT>=0x0500*/

 

/*

*0xB8-0xB9:reserved

*/

 

#defineVK_OEM_10xBA//';:'forUS

#defineVK_OEM_PLUS0xBB//'+'anycountry

#defineVK_OEM_COMMA0xBC//','anycountry

#defineVK_OEM_MINUS0xBD//'-'anycountry

#defineVK_OEM_PERIOD0xBE//'.'anycountry

#defineVK_OEM_20xBF//'/?'forUS

#defineVK_OEM_30xC0//'`~'forUS

 

/*

*0xC1-0xD7:reserved

*/

 

/*

*0xD8-0xDA:unassigned

*/

 

#defineVK_OEM_40xDB//'[{'forUS

#defineVK_OEM_50xDC//'\|'forUS

#defineVK_OEM_60xDD//']}'forUS

#defineVK_OEM_70xDE//''"'forUS

#defineVK_OEM_80xDF

 

/*

*0xE0:reserved

*/

 

/*

*Variousextendedorenhancedkeyboards

*/

#defineVK_OEM_AX0xE1//'AX'keyonJapaneseAXkbd

#defineVK_OEM_1020xE2//"<>"or"\|"onRT102-keykbd.

#defineVK_ICO_HELP0xE3//HelpkeyonICO

#defineVK_ICO_000xE4//00keyonICO

 

#if(WINVER>=0x0400)

#defineVK_PROCESSKEY0xE5

#endif/*WINVER>=0x0400*/

 

#defineVK_ICO_CLEAR0xE6

 

 

#if(_WIN32_WINNT>=0x0500)

#defineVK_PACKET0xE7

#endif/*_WIN32_WINNT>=0x0500*/

 

/*

*0xE8:unassigned

*/

 

/*

*Nokia/Ericssondefinitions

*/

#defineVK_OEM_RESET0xE9

#defineVK_OEM_JUMP0xEA

#defineVK_OEM_PA10xEB

#defineVK_OEM_PA20xEC

#defineVK_OEM_PA30xED

#defineVK_OEM_WSCTRL0xEE

#defineVK_OEM_CUSEL0xEF

#defineVK_OEM_ATTN0xF0

#defineVK_OEM_FINISH0xF1

#defineVK_OEM_COPY0xF2

#defineVK_OEM_AUTO0xF3

#defineVK_OEM_ENLW0xF4

#defineVK_OEM_BACKTAB0xF5

 

#defineVK_ATTN0xF6

#defineVK_CRSEL0xF7

#defineVK_EXSEL0xF8

#defineVK_EREOF0xF9

#defineVK_PLAY0xFA

#defineVK_ZOOM0xFB

#defineVK_NONAME0xFC

#defineVK_PA10xFD

#defineVK_OEM_CLEAR0xFE

 

/*

*0xFF:reserved

*/

键盘的扫描码、虚拟码:

当用户按下某个键时,

1.键盘会检测到这个动作,并通过键盘控制器把扫描码(scan code)传送到计算机;

键盘扫描码跟具体的硬件有关的,不同厂商对同一个键的扫描码有可能不同。

2.计算机接收到扫描码后,将其交给键盘驱动程序;

3.键盘驱动程序把这个扫描码转换为键盘虚拟码;

虚拟码与具体硬件无关,不同厂商的键盘,同一个键的虚拟码总是相同的。

3.然后,键盘驱动程序把该键盘操作的扫描码和虚拟码以及其它信息传递给操作系统;

4.操作系统将获得的信息封装在一个键盘消息中,并把该键盘消息插入到消息列队。

5.通过Windows的消息系统,该键盘消息被送到某个窗口中;

6.窗口所在的应用程序接收到消息后,可以了解到有关键盘操作的信息,然后决定作出一定的响应

键盘消息:WM_KEYDOWN

nVirtKey = (int) wParam; // 虚拟码

lKeyData = lParam; // 键盘操作的相关信息

键盘消息WM_KEYDOWN的第二个参数lParam比较复杂

其作用是指定重复次数、扫描码、扩展键标记、上下文环境码、前键状态标记、转换状态标记等

lParam: 总长4字节,32位

0–15位:用于指定当前消息的重复次数。当用户按下某个键持续一段时间的话,

该值是自动计数的按下某键的次数;若按键时间很长,则会发出多个消息,

且重复次数不会累计

16–23:指定扫描码

24:指定是否该键是一个扩展键(如alt、ctrl),若值为1表示是扩展键,否则其值为0

25–28:保留

29:指定上下文环境码。对于WM_KEYDOWN、WM_KEYUP消息,其值总为0,

对WM_CHAR消息,如果同时alt键被按下,则值为1,否则值为0.

30:指定前键状态。如果消息发送前该键是按下状态,其值为1,否则为0

31:指定转换状态,对于WM_KEYDOWN,其值总为0;

对于WM_CHAR,如果该键被释放,则其值为1,否则为0.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

循环赛日程表算法

题目&#xff1a;有n2^k个运动员要进行循环赛。现要设计一个满足以下要求的比赛日程表&#xff1a; &#xff08;1&#xff09;每个选手必须与其他n-1个选手各赛一次 &#xff08;2&#xff09;每个选手一天只能赛一次 &#xff08;3&#xff09;循环赛一共进行n-1天 解题思路&…

js有没有类似php的sleep函数,JavaScript-jQuery有没有类似sleep方法?

cronRun.sleep function(n) {for (var i0,jn*1000;i}}小飞写的function sleep(n) {var start new Date().getTime();while(true) if(new Date().getTime()-start > n) break;}貌似 Date new 的过多啊不过我在我本本上测的 好像不怎么管用&#xff0c;不知道为什么 是不是和…

GetAdaptersInfo获取MAC地址

源代码&#xff1a;#include<atlbase.h>#include<atlconv.h>#include"iphlpapi.h"#pragma comment(lib,"Iphlpapi.lib")int main(int argc,char*argv[]){PIP_ADAPTER_INFO pAdapterInfo;PIP_ADAPTER_INFO pAdapterNULL;DWORD dwRetVal0;pAdapt…

【转】Windows 窗体消息大全(速查)

阅读目录 通用窗口消息滚动条消息按钮控件消息按钮控件通知消息组合框控件消息组合框控件通知消息列表框控件消息列表框控件通知消息DDE消息(Dde.h)工具提示控件消息Rich Edit控件消息(带格式编辑控件)Listview控件消息Listview控件通知消息树控件消息树控件通知消息Header Co…

整数表示

在计算机中&#xff0c;不管程序还是数据都表示为二进制格式。对于我们平常编程常使用的整数有两种类型&#xff0c;一种是无符号整数&#xff0c;另外一种是有符号整数。 相应地&#xff0c;就有两种整数的二进制表达方式。一般我们使用的计算机都是32位,因此对两种整数的二进…

char 转wchar_t 及wchar_t转char

利用widechartomultibyte来转换的函数 通常适合于window平台上使用 #include <tchar.h>#include <windows.h>int _tmain(int argc, _tchar* argv[]){wchar_t pwstr[] l"我是中国人";wchar_t pwstr2[20];char *pcstr (char *)malloc(sizeof(char)*(2 * w…

oracle 12c sql图形化,Oracle 12c PL/SQL程序设计终极指南

Oracle 12c PL/SQL程序设计终极指南作者&#xff1a;孙风栋;王澜;郭晓惠出版日期&#xff1a;2015年06月文件大小&#xff1a;11.73M支持设备&#xff1a;&#xffe5;60.00在线试读适用客户端&#xff1a;言商书局iPad/iPhone客户端&#xff1a;下载 Android客户端&#xff1a…

CSS的语法结构

今天又看了一点书&#xff0c;哎我看书的速度可是够慢的。现摘录下来自己也增强下记忆&#xff0c;反正闲着也是闲着o(∩_∩)o...。 CSS的语法结构 CSS的语法结构由三个部分组成&#xff1a;选择符&#xff0c;(Selector)&#xff0c;属性(Porperty)和值(Value)。 使用方法…

WinCE 控制面板的创建

控制面板的组件,其实就是一个地地道道的DLL文件,所不同的是其后缀名为.CPL而已.控制面板组件对外必须要实现一个CPlApplet接口,其原型为:LONG CALLBACK CPlApplet(HWND hwndCPL,UINT message, LPARAM lParam1, LPARAM lParam2).而在此函数之中,为了使组件正常运作,我们必须要处…

oracle 存储同步,Oracle数据库知识——存储过程篇

在线QQ客服&#xff1a;1922638专业的SQL Server、MySQL数据库同步软件存储过程是一组用于完成特定功能的SQL语句&#xff0c;该语句已编译并存储在数据库中。用户通过指定存储过程的名称并提供参数(如果存储过程具有参数)来执行它。存储过程是数据库中的重要对象。任何设计良好…

【转】C++中的static_cast ,reinterpret_cast的用法和区别

转自&#xff1a;https://www.cnblogs.com/heyonggang/p/3361643.html 原文地址&#xff1a;https://www.cnblogs.com/heyonggang/p/3361643.html 用法&#xff1a;static_cast < type-id > ( expression ) 该运算符把expression转换为type-id类型&#xff0c;但没有运…

使用MvcContrib的FormHelper

MvcContrib的FormHelper提供了三大Helper Html辅助 验证HelperGrid表格Helper下载 下载后将MvcContrib.dll与MvcContrib.Samples.FormHelper.dll引用到Asp.net MVC工程 在Web.Config pages.namespaces加入以下节点 <add namespace"MvcContrib.UI.Tags"/><ad…

WinCE控制面板添加应用程序

WinCE系统中的控制面板和Windows系统中的控制面板原理是一样的&#xff0c;里面就是包含了一些应用程序。WinCE系统的控制面板由Ctlpnl.exe&#xff0c;Control.exe和一些.cpl文件组成&#xff0c;其中Ctlpnl.exe和Control.exe用于控制控制面板的文件夹显示和架构&#xff0c;而…

【转】滚动条消息(WM_VSCROLL和WM_HSCROLL)

转自&#xff1a;https://blog.csdn.net/zmq5411/article/details/6756189 &#xff08;1&#xff09;当用户单击滚动条或者是拖动滑块时&#xff0c;Windows会向窗口过程发送WM_VSCROLL消息&#xff08;垂直滚动时&#xff09;或者是WM_HSCROLL消息&#xff08;水平滚动时&am…

【转】CMMI环境下,该如何实施Agile?

“CMMI与敏捷之间是否有什么样的关系&#xff1f;是矛盾的&#xff1f;还是可融合的&#xff1f;”“在CMMI环境下如何实施敏捷&#xff1f;”自从“敏捷”诞生以后&#xff0c;此类话题就此起彼伏&#xff0c;从未停止。前几日&#xff0c;在AgileChina的讨论组中&#xff0c;…

透析WINCE的控制面板

WindowsCE是微软公司嵌入式、移动计算平台的基础&#xff0c;它是一个开放的、可升级的32位嵌入式操作系统&#xff0c;是基于掌上型电脑类的电子设备操作系统&#xff0c;它是精简的Windows 95,Windows CE的图形用户界面相当出色。Windows CE作业系统是Windows家族中最新的成员…

oracle 游标 904,如何解决Oracle数据库游标连接超出问题

如何解决Oracle数据库游标连接超出问题发布时间&#xff1a;2020-07-21 10:57:35来源&#xff1a;亿速云阅读&#xff1a;103作者&#xff1a;小猪这篇文章主要讲解了如何解决Oracle数据库游标连接超出问题&#xff0c;内容清晰明了&#xff0c;对此有兴趣的小伙伴可以学习一下…

【转】windows程序设计(14):鼠标消息详解

关于鼠标的一些细节知识&#xff1a; 通常&#xff0c;我们发消息时&#xff0c;都是对一个特定的窗口&#xff0c;但是对于鼠标消息却不然&#xff1a;只要鼠标跨越窗口或者在某窗口中按下鼠标按键&#xff0c;那么窗口消息处理程序就会收到鼠标消息&#xff0c;而不管该窗口…

用多媒体库 Bass.dll 播放 mp3 [15] - 设置与获取播放速度

本例效果图:代码文件:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ComCtrls;typeTForm1 class(TForm)OpenDialog1: TOpenDialog;Button1: TButton;Button2: TButton;Button3: TButton;TrackBar1:…

详解WINCE的控制面板

曾经在我的一篇《控制面板的创建》中介绍过WinCE控制面板的结构,不过由于那篇文章其目的只在于控制面板如何调用EXE程序,故对控制面板也仅是泛泛而谈.不过在这篇文章中,我们将对WinCE的使用方法来个整体的详解. 1.控制面板的结构 控制面板其实也是个动态链接库…