반응형
_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 |