2010-07-08 11 views
0

사용자 지정 Visual Studio 편집기를 만들고 현재 찾기 및 바꾸기를 사용하려고합니다.__VSFINDRESULT의 값이 잘못 되었습니까?

IVsFindTarget.Find 메서드에서는 __VSFINDRESULT.Found를 반환하고 검색 및 교체 요청을 요청하면 __VSFINDRESULT.AndReplace 플래그를 사용한다고 가정합니다.

VSFR_AndReplace = -2147483648 

그러나 문서는 말한다 :이 문제는 AndReplace이 정의되어 있다는 것입니다 찾을 수와

조합 반품 NOTFOUND

VSFR_AndReplace 유효한 UINT하지 않습니다. 이 두 가지를 어떻게 조합 할 수 있습니까?

답변

1

간결함을 위해 VSFR_Replaced (이미 FoundReplaced의 조합이라고되어 ​​있음)을 사용해보십시오.

유효한 uint의 경우 확실하게 (유효한 uint처럼)으로 처리 할 수 ​​있습니다. 10 진수 표현이 서명 되었더라도 기본 표현을 고려하십시오. 바이너리의 경우 0b 11111111 11111111 10000000 00000000 또는 0xffffffff80000000의 16 진수입니다. 위의 두 단어를 무시하면 0x8000000이됩니다. ; | (__VSFINDRESULT.VSFR_Found __ VSFINDRESULT.VSFR_AndReplace)

(uint)(__VSFINDRESULT.VSFR_Found | __VSFINDRESULT.VSFR_AndReplace) 
+0

(단위) :이이 플래그로 사용되기 때문에 어쨌든, 당신은 꽤 안전하게 단지 어쨌든 실제 값을 무시하고 같은 작업을 수행 할 수 있습니다 "상수 값 계산에서 오버플로"를 반환합니다. 0x8000000 시도했지만 작동하지 것 역시 중. : \ –

+0

[Connect] (http://connect.microsoft.com/VisualStudio)에서 버그를 제기 할 수 있습니까? 우리는이 두 가지를 잘못 읽었을 지 모르지만, 이들을 함께 넣을 수 있다고 가정하는 것이 논리적 인 것처럼 보입니다.이 메서드는 uint를 사용하는 메서드의 매개 변수로 사용된다고 가정 할 때 uint로 캐스팅됩니다. –

+0

https://connect.microsoft.com/VisualStudio/feedback/details/574068/-vsfindresult-vsfr-andreplace-has-an-incorrect-value –

관련 문제