1# @ohos.multimodalInput.pointer (鼠标指针) 2 3鼠标指针管理模块,用于查询和设置鼠标指针相关属性。 4 5> **说明**: 6> 7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9## 导入模块 10 11```js 12import { pointer } from '@kit.InputKit'; 13``` 14 15## pointer.setPointerVisible 16 17setPointerVisible(visible: boolean, callback: AsyncCallback<void>): void 18 19设置鼠标指针显示或者隐藏,使用AsyncCallback异步方式返回结果。 20 21**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 22 23**参数**: 24 25| 参数名 | 类型 | 必填 | 说明 | 26| -------- | ------------------------- | ---- | ---------------------------------------- | 27| visible | boolean | 是 | 鼠标指针是否显示。true表示显示,false表示不显示 | 28| callback | AsyncCallback<void> | 是 | 回调函数。 | 29 30**错误码**: 31 32以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 33 34| 错误码ID | 错误信息 | 35| ---- | --------------------- | 36| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 37 38**示例**: 39 40```js 41try { 42 pointer.setPointerVisible(true, (error: Error) => { 43 if (error) { 44 console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 45 return; 46 } 47 console.log(`Set pointer visible success`); 48 }); 49} catch (error) { 50 console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 51} 52``` 53 54## pointer.setPointerVisible 55 56setPointerVisible(visible: boolean): Promise<void> 57 58设置鼠标指针显示或者隐藏,使用Promise异步方式返回结果。 59 60**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 61 62**参数**: 63 64| 参数名 | 类型 | 必填 | 说明 | 65| ------- | ------- | ---- | ---------------------------------------- | 66| visible | boolean | 是 | 鼠标指针是否显示。true表示显示,false表示不显示。 | 67 68**返回值**: 69 70| 参数 | 说明 | 71| ------------------- | ------------------- | 72| Promise<void> | Promise对象。 | 73 74**错误码**: 75 76以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。。 77 78| 错误码ID | 错误信息 | 79| ---- | --------------------- | 80| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 81 82**示例**: 83 84```js 85try { 86 pointer.setPointerVisible(false).then(() => { 87 console.log(`Set pointer visible success`); 88 }); 89} catch (error) { 90 console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 91} 92``` 93 94## pointer.setPointerVisibleSync<sup>10+</sup> 95 96setPointerVisibleSync(visible: boolean): void 97 98使用同步方式设置鼠标指针显示或者隐藏。 99 100**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 101 102**参数**: 103 104| 参数名 | 类型 | 必填 | 说明 | 105| ------- | ------- | ---- | ---------------------------------------- | 106| visible | boolean | 是 | 鼠标指针是否显示。true表示显示,false表示不显示。 | 107 108**错误码**: 109 110以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 111 112| 错误码ID | 错误信息 | 113| ---- | --------------------- | 114| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 115 116**示例**: 117 118```js 119try { 120 pointer.setPointerVisibleSync(false); 121 console.log(`Set pointer visible success`); 122} catch (error) { 123 console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 124} 125``` 126 127## pointer.isPointerVisible 128 129isPointerVisible(callback: AsyncCallback<boolean>): void 130 131获取鼠标指针显示或隐藏状态,使用AsyncCallback异步方式返回结果。 132 133**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 134 135**参数**: 136 137| 参数名 | 类型 | 必填 | 说明 | 138| -------- | ---------------------------- | ---- | -------------- | 139| callback | AsyncCallback<boolean> | 是 | 回调函数,异步返回鼠标指针状态,true为显示,false为隐藏。 | 140 141**错误码**: 142 143以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 144 145| 错误码ID | 错误信息 | 146| ---- | --------------------- | 147| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 148 149**示例**: 150 151```js 152try { 153 pointer.isPointerVisible((error: Error, visible: boolean) => { 154 if (error) { 155 console.log(`Get pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 156 return; 157 } 158 console.log(`Get pointer visible success, visible: ${JSON.stringify(visible)}`); 159 }); 160} catch (error) { 161 console.log(`Get pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 162} 163``` 164 165## pointer.isPointerVisible 166 167isPointerVisible(): Promise<boolean> 168 169获取鼠标指针显示或隐藏状态,使用Promise异步方式返回结果。 170 171**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 172 173**返回值**: 174 175| 参数 | 说明 | 176| ---------------------- | ------------------- | 177| Promise<boolean> | Promise对象,异步返回鼠标指针显示或隐藏状态。 | 178 179**示例**: 180 181```js 182try { 183 pointer.isPointerVisible().then((visible: boolean) => { 184 console.log(`Get pointer visible success, visible: ${JSON.stringify(visible)}`); 185 }); 186} catch (error) { 187 console.log(`Get pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 188} 189``` 190 191## pointer.isPointerVisibleSync<sup>10+</sup> 192 193isPointerVisibleSync(): boolean 194 195使用同步方式获取鼠标指针显示或者隐藏。 196 197**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 198 199**返回值**: 200 201| 参数 | 说明 | 202| ---------------------- | ------------------- | 203| boolean | 返回鼠标指针显示或隐藏状态。true代表显示状态,false代表隐藏状态。 | 204 205**示例**: 206 207```js 208try { 209 let visible: boolean = pointer.isPointerVisibleSync(); 210 console.log(`Get pointer visible success, visible: ${JSON.stringify(visible)}`); 211} catch (error) { 212 console.log(`Get pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 213} 214``` 215 216## pointer.getPointerStyle 217 218getPointerStyle(windowId: number, callback: AsyncCallback<PointerStyle>): void 219 220获取鼠标样式类型,使用AsyncCallback异步方式返回结果。 221 222**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 223 224**参数**: 225 226| 参数名 | 类型 | 必填 | 说明 | 227| -------- | ---------------------------------------- | ---- | -------------- | 228| windowId | number | 是 | 窗口id。 | 229| callback | AsyncCallback<[PointerStyle](#pointerstyle)> | 是 | 回调函数,异步返回鼠标样式类型。 | 230 231**错误码**: 232 233以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 234 235| 错误码ID | 错误信息 | 236| ---- | --------------------- | 237| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 238 239**示例**: 240 241```js 242import { BusinessError } from '@kit.BasicServicesKit'; 243import { window } from '@kit.ArkUI'; 244 245let context = getContext(this); 246window.getLastWindow(context, (error: BusinessError, win: window.Window) => { 247 if (error.code) { 248 console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(error)); 249 return; 250 } 251 let windowId = win.getWindowProperties().id; 252 if (windowId < 0) { 253 console.log(`Invalid windowId`); 254 return; 255 } 256 try { 257 pointer.getPointerStyle(windowId, (error: Error, style: pointer.PointerStyle) => { 258 console.log(`Get pointer style success, style: ${JSON.stringify(style)}`); 259 }); 260 } catch (error) { 261 console.log(`Get pointer style failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 262 } 263}); 264``` 265 266## pointer.getPointerStyle 267 268getPointerStyle(windowId: number): Promise<PointerStyle> 269 270获取鼠标样式类型,使用Promise异步方式返回结果。 271 272**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 273 274**参数**: 275 276| 参数名 | 类型 | 必填 | 说明 | 277| -------- | ------ | ---- | -------- | 278| windowId | number | 是 | 窗口id。 | 279 280**返回值**: 281 282| 参数 | 说明 | 283| ---------------------------------------- | ------------------- | 284| Promise<[PointerStyle](#pointerstyle)> | Promise实例,异步返回鼠标样式类型。 | 285 286**错误码**: 287 288以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 289 290| 错误码ID | 错误信息 | 291| ---- | --------------------- | 292| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 293 294**示例**: 295 296```js 297import { BusinessError } from '@kit.BasicServicesKit'; 298import { window } from '@kit.ArkUI'; 299 300let context = getContext(this); 301window.getLastWindow(context, (error: BusinessError, win: window.Window) => { 302 if (error.code) { 303 console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(error)); 304 return; 305 } 306 let windowId = win.getWindowProperties().id; 307 if (windowId < 0) { 308 console.log(`Invalid windowId`); 309 return; 310 } 311 try { 312 pointer.getPointerStyle(windowId).then((style: pointer.PointerStyle) => { 313 console.log(`Get pointer style success, style: ${JSON.stringify(style)}`); 314 }); 315 } catch (error) { 316 console.log(`Get pointer style failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 317 } 318}); 319``` 320 321## pointer.getPointerStyleSync<sup>10+</sup> 322 323getPointerStyleSync(windowId: number): PointerStyle 324 325使用同步方式获取鼠标样式类型。 326 327**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 328 329**参数**: 330 331| 参数名 | 类型 | 必填 | 说明 | 332| -------- | ------ | ---- | -------- | 333| windowId | number | 是 | 窗口id。<br>默认值为-1,表示获取全局的鼠标样式。 | 334 335**返回值**: 336 337| 参数 | 说明 | 338| ---------------------------------------- | ------------------- | 339| [PointerStyle](#pointerstyle) | 返回鼠标样式类型。 | 340 341**错误码**: 342 343以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 344 345| 错误码ID | 错误信息 | 346| ---- | --------------------- | 347| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 348 349**示例**: 350 351```js 352import { pointer } from '@kit.InputKit'; 353 354let windowId = -1; 355try { 356 let style: pointer.PointerStyle = pointer.getPointerStyleSync(windowId); 357 console.log(`Get pointer style success, style: ${JSON.stringify(style)}`); 358} catch (error) { 359 console.log(`Get pointer style failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 360} 361``` 362 363## pointer.setPointerStyle 364 365setPointerStyle(windowId: number, pointerStyle: PointerStyle, callback: AsyncCallback<void>): void 366 367设置鼠标样式类型,使用AsyncCallback异步方式返回结果。 368 369**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 370 371**参数**: 372 373| 参数名 | 类型 | 必填 | 说明 | 374| ------------ | ------------------------------ | ---- | ----------------------------------- | 375| windowId | number | 是 | 窗口id。 | 376| pointerStyle | [PointerStyle](#pointerstyle) | 是 | 鼠标样式。 | 377| callback | AsyncCallback<void> | 是 | 回调函数。 | 378 379**错误码**: 380 381以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 382 383| 错误码ID | 错误信息 | 384| ---- | --------------------- | 385| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 386 387**示例**: 388 389```js 390import { BusinessError } from '@kit.BasicServicesKit'; 391import { window } from '@kit.ArkUI'; 392 393window.getLastWindow(getContext(), (error: BusinessError, win: window.Window) => { 394 if (error.code) { 395 console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(error)); 396 return; 397 } 398 let windowId = win.getWindowProperties().id; 399 if (windowId < 0) { 400 console.log(`Invalid windowId`); 401 return; 402 } 403 try { 404 pointer.setPointerStyle(windowId, pointer.PointerStyle.CROSS, error => { 405 console.log(`Set pointer style success`); 406 }); 407 } catch (error) { 408 console.log(`Set pointer style failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 409 } 410}); 411``` 412## pointer.setPointerStyle 413 414setPointerStyle(windowId: number, pointerStyle: PointerStyle): Promise<void> 415 416设置鼠标样式类型,使用Promise异步方式返回结果。 417 418**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 419 420**参数**: 421 422| 参数名 | 类型 | 必填 | 说明 | 423| ------------------- | ------------------------------ | ---- | ---------------- | 424| windowId | number | 是 | 窗口id。 | 425| pointerStyle | [PointerStyle](#pointerstyle) | 是 | 鼠标样式。 | 426 427**返回值**: 428 429| 参数 | 说明 | 430| ------------------- | ------------------- | 431| Promise<void> | Promise对象。 | 432 433**错误码**: 434 435以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 436 437| 错误码ID | 错误信息 | 438| ---- | --------------------- | 439| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 440 441**示例**: 442 443```js 444import { BusinessError } from '@kit.BasicServicesKit'; 445import { window } from '@kit.ArkUI'; 446 447window.getLastWindow(getContext(), (error: BusinessError, win: window.Window) => { 448 if (error.code) { 449 console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(error)); 450 return; 451 } 452 let windowId = win.getWindowProperties().id; 453 if (windowId < 0) { 454 console.log(`Invalid windowId`); 455 return; 456 } 457 try { 458 pointer.setPointerStyle(windowId, pointer.PointerStyle.CROSS).then(() => { 459 console.log(`Set pointer style success`); 460 }); 461 } catch (error) { 462 console.log(`Set pointer style failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 463 } 464}); 465``` 466 467## pointer.setPointerStyleSync<sup>10+</sup> 468 469setPointerStyleSync(windowId: number, pointerStyle: PointerStyle): void 470 471使用同步方式设置鼠标样式类型。 472 473**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 474 475**参数**: 476 477| 参数名 | 类型 | 必填 | 说明 | 478| ------------------- | ------------------------------ | ---- | ---------------- | 479| windowId | number | 是 | 窗口id。 | 480| pointerStyle | [PointerStyle](#pointerstyle) | 是 | 鼠标样式。 | 481 482**错误码**: 483 484以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 485 486| 错误码ID | 错误信息 | 487| ---- | --------------------- | 488| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 489 490**示例**: 491```js 492import { BusinessError } from '@kit.BasicServicesKit'; 493import { window } from '@kit.ArkUI'; 494 495window.getLastWindow(getContext(), (error: BusinessError, win: window.Window) => { 496 if (error.code) { 497 console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(error)); 498 return; 499 } 500 let windowId = win.getWindowProperties().id; 501 if (windowId < 0) { 502 console.log(`Invalid windowId`); 503 return; 504 } 505 try { 506 pointer.setPointerStyleSync(windowId, pointer.PointerStyle.CROSS); 507 console.log(`Set pointer style success`); 508 } catch (error) { 509 console.log(`getPointerSize failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 510 } 511}); 512``` 513 514## PrimaryButton<sup>10+</sup> 515 516鼠标主键类型。 517 518**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 519 520| 名称 | 值 | 说明 | 521| -------------------------------- | ---- | ------ | 522| LEFT | 0 | 鼠标左键 | 523| RIGHT | 1 | 鼠标右键 | 524 525## RightClickType<sup>10+</sup> 526 527右键菜单触发方式。 528 529**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 530 531| 名称 | 值 | 说明 | 532| -------------------------------- | ---- | ------ | 533| TOUCHPAD_RIGHT_BUTTON | 1 |触控板右键区域。 | 534| TOUCHPAD_LEFT_BUTTON | 2 |触控板左键区域。 | 535| TOUCHPAD_TWO_FINGER_TAP | 3 |双指轻击或按压触控板。| 536 537## PointerStyle 538 539鼠标样式类型。 540 541**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 542 543| 名称 | 值 | 说明 |图示 | 544| -------------------------------- | ---- | ------ |------ | 545| DEFAULT | 0 | 默认 || 546| EAST | 1 | 向东箭头 || 547| WEST | 2 | 向西箭头 || 548| SOUTH | 3 | 向南箭头 || 549| NORTH | 4 | 向北箭头 || 550| WEST_EAST | 5 | 向西东箭头 || 551| NORTH_SOUTH | 6 | 向北南箭头 || 552| NORTH_EAST | 7 | 向东北箭头 || 553| NORTH_WEST | 8 | 向西北箭头 || 554| SOUTH_EAST | 9 | 向东南箭头 || 555| SOUTH_WEST | 10 | 向西南箭头 || 556| NORTH_EAST_SOUTH_WEST | 11 | 东北西南调整 || 557| NORTH_WEST_SOUTH_EAST | 12 | 西北东南调整 || 558| CROSS | 13 | 准确选择 || 559| CURSOR_COPY | 14 | 拷贝 || 560| CURSOR_FORBID | 15 | 不可用 || 561| COLOR_SUCKER | 16 | 滴管 || 562| HAND_GRABBING | 17 | 并拢的手 || 563| HAND_OPEN | 18 | 张开的手 || 564| HAND_POINTING | 19 | 手形指针 || 565| HELP | 20 | 帮助选择 || 566| MOVE | 21 | 移动 || 567| RESIZE_LEFT_RIGHT | 22 | 内部左右调整 || 568| RESIZE_UP_DOWN | 23 | 内部上下调整 || 569| SCREENSHOT_CHOOSE | 24 | 截图十字准星 || 570| SCREENSHOT_CURSOR | 25 | 截图 || 571| TEXT_CURSOR | 26 | 文本选择 || 572| ZOOM_IN | 27 | 放大 || 573| ZOOM_OUT | 28 | 缩小 || 574| MIDDLE_BTN_EAST | 29 | 向东滚动 || 575| MIDDLE_BTN_WEST | 30 | 向西滚动 || 576| MIDDLE_BTN_SOUTH | 31 | 向南滚动 |  | 577| MIDDLE_BTN_NORTH | 32 | 向北滚动 || 578| MIDDLE_BTN_NORTH_SOUTH | 33 | 向北南滚动 || 579| MIDDLE_BTN_NORTH_EAST | 34 | 向东北滚动 || 580| MIDDLE_BTN_NORTH_WEST | 35 | 向西北滚动 || 581| MIDDLE_BTN_SOUTH_EAST | 36 | 向东南滚动 || 582| MIDDLE_BTN_SOUTH_WEST | 37 | 向西南滚动 || 583| MIDDLE_BTN_NORTH_SOUTH_WEST_EAST | 38 | 四向锥形移动 || 584| HORIZONTAL_TEXT_CURSOR<sup>10+</sup> | 39 | 垂直文本选择 || 585| CURSOR_CROSS<sup>10+</sup> | 40 | 十字光标 || 586| CURSOR_CIRCLE<sup>10+</sup> | 41 | 圆形光标 || 587| LOADING<sup>10+</sup> | 42 | 正在载入动画光标 |<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 588| RUNNING<sup>10+</sup> | 43 | 后台运行中动画光标 |<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 589 590## pointer.setCustomCursor<sup>11+</sup> 591 592setCustomCursor(windowId: number, pixelMap: image.PixelMap, focusX?: number, focusY?: number): Promise<void> 593 594设置自定义光标样式,使用Promise异步方式返回结果。 595 596**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 597 598**参数**: 599 600| 参数名 | 类型 | 必填 | 说明 | 601| ----- | ------ | ---- | ----------------------------------- | 602| windowId | number | 是 | 窗口id。 | 603| pixelMap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是 | 自定义光标资源。 | 604| focusX | number | 否 | 自定义光标焦点x, 取值范围:大于等于0,默认为0。 | 605| focusY | number | 否 | 自定义光标焦点y,取值范围:大于等于0,默认为0。 | 606 607**返回值**: 608 609| 参数 | 说明 | 610| ------------------- | ---------------- | 611| Promise<void> | 无返回结果的Promise对象。 | 612 613**错误码**: 614 615以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 616 617| 错误码ID | 错误信息 | 618| ---- | --------------------- | 619| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 620 621**示例**: 622 623```js 624import { image } from '@kit.ImageKit'; 625import { BusinessError } from '@kit.BasicServicesKit'; 626import { window } from '@kit.ArkUI'; 627getContext().resourceManager.getMediaContent($r("app.media.app_icon")).then((svgFileData) => { 628 const svgBuffer: ArrayBuffer = svgFileData.buffer.slice(0); 629 let svgImagesource: image.ImageSource = image.createImageSource(svgBuffer); 630 let svgDecodingOptions: image.DecodingOptions = {desiredSize: { width: 50, height:50 }}; 631 svgImagesource.createPixelMap(svgDecodingOptions).then((pixelMap) => { 632 window.getLastWindow(getContext(), (error: BusinessError, win: window.Window) => { 633 let windowId = win.getWindowProperties().id; 634 try { 635 pointer.setCustomCursor(windowId, pixelMap).then(() => { 636 console.log(`setCustomCursor success`); 637 }); 638 } catch (error) { 639 console.log(`setCustomCursor failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 640 } 641 }); 642 }); 643}); 644``` 645 646## pointer.setCustomCursorSync<sup>11+</sup> 647 648setCustomCursorSync(windowId: number, pixelMap: image.PixelMap, focusX?: number, focusY?: number): void 649 650设置自定义光标样式,使用同步方式进行设置。 651 652**系统能力**:SystemCapability.MultimodalInput.Input.Pointer 653 654**参数**: 655 656| 参数名 | 类型 | 必填 | 说明 | 657| ----- | ------ | ---- | ----------------------------------- | 658| windowId | number | 是 | 窗口id。 | 659| pixelMap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是 | 自定义光标资源。 | 660| focusX | number | 否 | 自定义光标焦点x, 取值范围:大于等于0,默认为0。 | 661| focusY | number | 否 | 自定义光标焦点y,取值范围:大于等于0,默认为0。 | 662 663**错误码**: 664 665以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 666 667| 错误码ID | 错误信息 | 668| ---- | --------------------- | 669| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 670 671**示例**: 672 673```js 674import { image } from '@kit.ImageKit'; 675import { BusinessError } from '@kit.BasicServicesKit'; 676import { window } from '@kit.ArkUI'; 677const svgFileData = getContext().resourceManager.getMediaContent($r("app.media.app_icon")).then((svgFileData) => { 678 const svgBuffer: ArrayBuffer = svgFileData.buffer.slice(0); 679 let svgImagesource: image.ImageSource = image.createImageSource(svgBuffer); 680 let svgDecodingOptions: image.DecodingOptions = {desiredSize: { width: 50, height:50 }}; 681 svgImagesource.createPixelMap(svgDecodingOptions).then((pixelMap) => { 682 window.getLastWindow(getContext(), (error: BusinessError, win: window.Window) => { 683 let windowId = win.getWindowProperties().id; 684 try { 685 pointer.setCustomCursorSync(windowId, pixelMap, 25, 25); 686 console.log(`setCustomCursorSync success`); 687 } catch (error) { 688 console.log(`setCustomCursorSync failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 689 } 690 }); 691 }); 692}); 693```