수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1694988
  • Today | 733
  • Yesterday | 606

Programming/Win32 API2007/03/01 12:03

문자열을 _T() 형으로 바꿔주는 매크로

원본 : http://www.debuglab.com/knowledge/macro_t.html

1.요약

간단한 매크로를 사용하여 "" 로 묶인 문자열을 _T("") 으로 손쉽게 바꾸어 보자.


2.본문

문자열이 ANSI 와 UNICODE 를 능동적으로 적용하기 위해서는 _T() 매크로를 사용합니다. 물론 컴파일 시간에 _UNICODE 가 define 되어 있느냐의 차이가 위의 매크로에 영향을 미치죠. 하지만, UNICODE 프로그램을 많이 해보지 않은한, 그리고 전에 프로그램을 UNICODE 를 지원하기 위해서 만들지 않았다면, 매번 _T() 를 붙이기란 결코 쉬운작업이 아닙니다. 따라서 첨부한 매크로 파일을 사용하면 쉽게 _T()를 문자열에 붙일 수 있습니다.

첨부한 파일은 ..\Microsoft Visual Studio\Common\MSDev98\Macros 폴더에 넣어서 사용하시기 바랍니다.


3.예제

// 이렇게 되어 있으면 이 라인에 Cursor를 놓고 

// 매크로를 실행하시면 됩니다. 

char szText[] = "Test Text"; 



// 짜잔.. char szText[] = _T("Test Test"); 


* 매크로 소스 - 다운로드

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



- 2001.08.13 Smile Seo -

"Win32 API" 카테고리의 다른 글
  • pair 라는 것의 용도는? (0)2007/03/01
  • Alt+F4 키로 종료되는거 막는 방법 (0)2007/03/01
  • 문자열을 _T() 형으로 바꿔주는 매크로 (0)2007/03/01
  • Ansi 문자열과 Unicode 문자열 바꾸기 (0)2007/03/01
  • Console 프로젝트와 Windows 프로젝트 바꾸기 (0)2007/03/01
2007/03/01 12:03 2007/03/01 12:03
Posted by webdizen
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2646

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1 ... 602 603 604 605 606 607 608 609 610 ... 3009  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 쓰레드
  • 종이
  • 옷
  • 디바이스
  • 리디렉션
  • memory 크기
  • Application
  • 웹디즌
  • 웹 브라우저
  • 엠파스
  • 암호화 매커니즘
  • 아바이 벌꿀 소주
  • 에러
  • 적벽대전
  • 비교 연산자
  • RegOpenKey
  • 딤플
  • FlashWindow
  • 조니워커 블랙
  • nmap

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 경청... 너무나 중요한데.......
    webdizen 14:59
  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Polarux - Linuxing
      • Rodman®
      • 까만 나비
      • 나를 가꾸는 시간.
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.