반응형
_T() 자동 매크로
Sub UnderscoreT()
'DESCRIPTION: This macro will automatically put "_T( )" around
' your strings, Author: Orin Walker, 1999, Version 1.1
Dim win
set win = ActiveWindow
if win.type <> "Text" Then
MsgBox "This macro can only be run when a text editor" + _
" window is active."
else
iCount = 0
bFoundAQuote = false
ActiveDocument.Selection.SelectLine
strTemp = ActiveDocument.Selection.Text
strStuffAtEnd = ""
while bDone <> true
str = ParseString(strTemp, bFoundAQuote, strStuffAtEnd)
strBuildString = strBuildString + str
if bFoundAQuote = true then
strTemp = strStuffAtEnd
else
bDone = true
ActiveDocument.Selection.Delete
ActiveDocument.Selection = strBuildString
end if
iCount = iCount + 1
if iCount > 100 then ' safety valve
bDone = true
end if
Wend
end if
End Sub
Function ParseString(strTemp, byRef bFoundAQuote, _
byRef strStuffAtEnd)
'DESCRIPTION: This is a helper function for the UnderscoreT macro,
' Author: Orin Walker, 1999, Version 1.1
' Comment in/out whatever style you prefer
strSpace = "" ' NO space before or after "_T("
'strSpace = " " ' Add a space before and after "_T("
iLen = len(strTemp)
bFoundAQuote = false
' Get the position of the first quote on the line
iPos = instr(strTemp, chr(34))
if iPos > 0 Then 'a quote was found
' Go back and see if we have an existing
' _T( defined for this quote
x = iPos-5 ' Go back up to 5 characters
if x <= 0 then ' If we have reached the
' beginning of our string
x = 1 ' Set x to start at the first character
end if
strCheck = mid(strTemp, x, iPos)
iUnderscoreTPos = instr(strCheck, "_T(")
' If we found one grab everything before the first quote
strBeforeFirstQuote = mid(strTemp, 1, iPos-1)
if iUnderscoreTPos > 0 then ' we found an "_T("
' Do NOT add the "_T(" to our temporary string
strNewTempStr = strBeforeFirstQuote
else
' Now create our new temporary string and append "_T("
strNewTempStr = strBeforeFirstQuote + "_T(" + strSpace
end if
' Get the remaining string
strRemaining = mid(strTemp, iPos+1, iLen)
iLen = len(strRemaining)
' Now find the second quote
iPos = instr(strRemaining, chr(34))
if iPos > 0 Then
' If we found one save the stuff in quotes
strStuffInQuotes = chr(34) + mid(strRemaining,1,iPos)
' And grab the stuff after the quotes
strStuffAtEnd = mid(strRemaining, iPos+1, iLen)
if iUnderscoreTPos > 0 then ' we found an _T(
' Do NOT add the final ")" to our parsed string,
' because it alreasy exists
ParseString = strNewTempStr + strStuffInQuotes
else
' Create our parsed string
ParseString = strNewTempStr + strStuffInQuotes + _
strSpace + ")"
end if
bFoundAQuote = true
else
' No SECOND quote was found so just return
' what was passed in
ParseString = strTemp
End if
else
' No quote was found so just return what was passed in
ParseString = strTemp
end if
End Function
출처를 찾을수가 없네요... ㅠㅠ
'Programming > Visual Studio' 카테고리의 다른 글
| Visual Studio 유용한 확장 도구 (0) | 2014.05.26 |
|---|---|
| Visual Studio Macro 작동 (0) | 2014.02.20 |
| devdenv 또는 MSBuild 로 빌드시 프로젝트 종속성 무시 (0) | 2013.10.17 |
| Visual Studio 에서 빌드 후 이벤트의 매크로 이용 (0) | 2013.03.29 |
| VS2010 _T 매크로 자동 입력 (0) | 2012.09.07 |
| Windows 7 64bit 시스템에서 Visual C++ 6.0 사용하기 (14) | 2012.02.09 |
| visual studio 정규식 (0) | 2011.09.05 |
| visual studio 2010 - Restart Manager (0) | 2009.02.24 |