저는 COM 클라이언트를 작성하고 있습니다. 내 COM 서버의 기능 중 하나는 인수로 열거 소요 (긴) 번호는 다음과 같습니다 반환합니다 (I는 초기와 후기 바인딩을 모두 사용하고enum을 _variant_t로 변환하십시오. C++
기능 GetFlowsheetStatus (FlowSheetObjStatusFlag_enum으로 iQueryFlags) 한 IDispatch 및 직접 인터페이스) 그래서 뭔가 쓴 : FlowSheetObjStatusFlag_enum 플래그; _variant_t p = _variant_t (플래그);
그래서 전달할 수 있으려면 열거 형 "FlowSheetObjStatusFlag_enum"을 _variant_t로 변환해야합니다. 어떻게해야합니까?
왜 변형으로 변환해야한다고 생각합니까? 게다가 "this like looks"예제는 C++이 아닌 VBA 또는 VB6처럼 보이지만 C++을 요청합니다. 분명히 해줄 수 있니? –
의견을 보내 주셔서 감사합니다. 내가 변종 이외의 아무것도 전달하려고, HRESULT 오류를 반환합니다. 이 예제는 VBA로 작성된 COM 서버 설명서에서입니다. – Peet
해당 VBA 서명을 사용하여 Variant를 잘못 사용했습니다. 자동화 (IDispatch 메서드 호출)를 통해 라이브러리를 사용하지 않는 한 언급하지 않았지만 어려운 방법입니다. 또는 예가 거짓말 (항상 가능) 한 경우. 예제가 거짓말이 아니라고 가정하고, C++ 일 경우 올바른 데이터 유형을 전달할 수도 있고 컴파일하지 않을 수도 있습니다. 그래서 "returns error"에서 혼란스러워합니다. 전달할 올바른 "enum"정의는 형식 라이브러리를 C++ 코드에 통합 한 방법에 따라 다릅니다. 예를 들어, # import를 사용한 경우, 생성 된 C++ 파일을 검사하여 열거 유형의 이름을 판별하십시오. –