DirectInput DirectInput C/C++ 레퍼런스 인터페이스 IDirectInputDevice8 SetActionMap [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
장치의 데이터 형식을 설정해, 애플리케이션 정의의 액션을 장치 개체에 맵 한다. 버퍼링 데이터의 버퍼 사이즈도 설정한다.
구문
HRESULT SetActionMap(
LPCDIACTIONFORMAT lpdiActionFormat, LPCTSTR lptszUserName, DWORD dwFlags );
파라미터
- lpdiActionFormat
- 적용하는 액션 맵에 관한 정보를 저장 하는 DIACTIONFORMAT 구조체의 주소.
- lptszUserName
- 어느 사용자의 액션 맵을 설정해 있을까에 임해서, 사용자명을 지정하는 Unicode 캐릭터 라인. NULL 를 지정 하면, 현재 시스템에 로그인하고 있는 사용자를 나타낸다.
- dwFlags
- 액션 맵의 적용 방법을 지정하는 DWORD 값. 다음의 몇개의 값을 지정할 수 있다.
- DIDSAM_DEFAULT
- 이 사용자의 액션 맵을 설정한다. 맵이 현재의 맵과 다른 경우, 새로운 설정이 디스크에 보존된다.
- DIDSAM_FORCESAVE
- 항상 구성을 디스크에 보존한다.
- DIDSAM_NOUSER
- 디폴트의 구성 프로퍼티 시트로 이 장치의 사용자 소유권을 리셋 한다. 사용자 소유권을 리셋 해도, 현재의 액션 맵은 삭제되지 않는다.
반환값
성공했을 경우는, DI_OK, DI_SETTINGSNOTSAVED 또는 DI_WRITEPROTECT 를 돌려준다.
실패했을 경우는, 에러값 DIERR_ACQUIRED 또는 DIERR_INVALIDPARAM 를 돌려준다.
DI_OK 조작은 완전하게 종료했다. 이 값은, 구성 요소 개체 모델 (COM)의 표준의 반환값인 S_OK 에 동일하다. DI_SETTINGSNOTSAVED 액션 맵은 장치에 적용되었지만, 설정 정보는 보존되지 않았다. DI_WRITEPROTECT 설정을 변경할 수 없는 것을 나타내는 성공 코드. DIERR_ACQUIRED 조작은, 장치가 취득 상태의 사이는 실행할 수 없다. DIERR_INVALIDPARAM 무효인 파라미터가, 돌아오는 함수에 건네졌는지, 개체가 그 함수를 호출할 수 있는 상태에 없었다. 이 값은, 표준의 COM 반환값인 E_INVALIDARG 에 동일하다.
주의
이 메서드에 의해, 액션과 컨트롤의 맵핑을 장치의 디폴트로부터 변경할 수 있는 메카니즘을 얻을 수 있다. 애플리케이션은, 이 메서드를 사용해 게임내의 액션을 가상 컨트롤에 맵 할 필요가 있다.
이 메서드에 건네지는 사용자명에 의해, 장치의 액션 맵세트가 특정 사용자에 바인드 된다. 설정이 현재 적용되고 있는 맵과 다른 경우는, 자동적으로 디스크에 보존된다. 복수의 사용자로부터 입력을 받아들이는 애플리케이션은, 각 사용자의 액션 맵이 경합 할 가능성이 있으므로, 시스템의 마우스나 키보드에 액션 맵을 적용할 때는 주의가 필요하다.
이 메서드는, 장치가 취득되지 않은 경우에만 호출할 수가 있다.
IDirectInputDevice8::BuildActionMap 가 성공해도, 어느 액션도 맵 되지 않는 경우는, 그 후 IDirectInputDevice8::SetActionMap 를 호출하면 DI_OK 가 돌아가지만,IDirectInputDevice8::Acquire 를 호출하면 실패해, DIERR_INVALIDPARAM 가 돌아간다.
참조
IDirectInputDevice8::BuildActionMap