2009-11-30 2 views
0

나는 헤더 파일에서 필요한 것을 대부분 파헤쳐 보았지만 계속 충돌했다.
다음은 사용을 시도한 선언입니다.하지만 선언의 문제는 아닌 것 같습니다. 나는 그것이 실제로 그것을 잘못 사용하고 있다고 생각한다.
GetLocaleInfoEx를 사용하여 VB (A/6) 예제를 아는 사람이 있습니까?

Private Declare Function GetLocaleInfoEx Lib "kernel32" (_ 
ByVal lpLocaleName As Long, _ 
ByVal LCType As Long, _ 
ByRef lpLCData As Long, _ 
ByVal cchData As Long _ 
) As Long 

Here 해당 문서이다.
MarkJ에 의해 편집 : Oorang은 Vista에서 선호되는 MSDN 문서 때문에 GetLocaleInfoEx를 사용하려고합니다.

+0

Vista를 사용하고 있습니까? –

+0

가능한 함정은 로캘 이름입니다. 당신의 선언은 어떻게 생겼습니까? –

+1

축하합니다. 당신은 "LocaleInfoEx"를위한 유일한 Google 히트입니다. 아마도 충돌을 설명 할 것입니다. –

답변

1

편집 : 나는 집에서 비스타가 없기 때문에 이것을 테스트 할 수 없지만 오랑 (Oorang)은 (코멘트에서) 작동한다고 말한다.

Private Declare Function GetLocaleInfoEx _ 
Lib "kernel32" (_ 
    ByVal lpLocaleName As Long, _ 
    ByVal LCType As Long, _ 
    ByVal lpLCData As Long, _ 
    ByVal cchData As Long _ 
) As Long 

Const LOCALE_SMONTHNAME1 = 56& 
Dim sLocaleName As String 
Dim sRetBuffer As String 
Dim nCharsRet As Long 
sLocaleName = "en-US" & Chr$(0) 
sRetBuffer = Space(256) 
nCharsRet = GetLocaleInfoEx(StrPtr(sLocaleName), _ 
    LOCALE_SMONTHNAME1, StrPtr(sRetBuffer), Len(sRetBuffer)-1) 
MsgBox Left$(sRetBuffer, nCharsRet) 

원본 신고서가 잘못되었습니다. 리턴 문자열에 대한 버퍼를 제공해야합니다 (와이드 문자, 그렇지 않으면 UTF-16 유니 코드 문자열로 알려짐). lpLCData 인수에서 버퍼에 대한 포인터를 전달해야합니다. 따라서 need to declare 인수는 ByVal Long이고 을 사용합니다. 여기서 string은 문자로 채워져 반환 데이터를위한 공간을 만듭니다.

+0

Vista에서 작동합니다. 감사:) – Oorang

관련 문제