지식
 

지식 : 팁사용기   새글 5점 / 간단한 글 5점 / 답글 5점

 
  total 글수 2362
Xcode 2.2 에서 카본 프로그램 만들자 (1)
hongjuny
조회수 : 2,268
댓글 13
2005-12-16 12:32:33
Xcode 새 버젼의 카본 어플리케이션 템플릿이 좀 더 친절해졌더군요. 한편, 지금까지 자기 고유의 이벤트 핸들러를 갖고 계시던 분들에게는 더 힘들어 졌더군요. ㅠㅠ

자 해 봅시다.

일단. Xcode 를 실행하고, File->New Project 를 선택합니다. Assistant 에서 Application 에 있는 Carbon Application 을 선택합니다. 프로젝트 이름과 디렉토리를 물어보겠죠? 보통 Documents 폴더 안에 넣으시던데, 제 경우는 Projects 라는 폴더를 새로 만들어서 그곳에 따로따로 집어넣는 편입니다. 이것은 취향에 맞게... 하시고... ㅎㅎㅎ

예전 버젼까지는 그냥 main.c 에 윈도우 하나 열면 끝이었는데, 이번에는 새로운 함수가 그 밑에 주렁 주렁 달려있는 것을 보실 겁니다.

AppEventHandler()
WindowEventHandler()

카본 프로그램을 짠다 하면 당근 필수요소로 필요한 이 두 핸들러가 추가되어 있습니다. 자세한 내용은 각자 알아서... ㅡㅡ;;;

자, 그러면 이제 윈도우에 뭔가 그림을 그리고 싶은 강렬한 욕구를 느끼시는 분을 위한 특별 이벤트...

두둥~

ㅡㅡ;;;

프로젝트 창에 보시면 main.nib 라는 것이 있습니다. NIB 는 NextStep Interface Builder 의 약자입니다. 그 옛날 넥스트 스탭에서부터 물려 내려온 유산입죠. 더블클릭 하시면 인터페이스 빌더가 실행되겠지요. 툴 창에 보시면 세 번째 아이콘이 Carbon Enahnced Controls 입니다. 이 중에서 HIView 라는 놈을 끌어다가 메인 윈도우에 놓으십시오. 그리고 끌어다놓은 HIView 오브젝트를 선택하신 다음 "쉬프트+사과+I" 를 누르세요. 그러면 Inspector 라는 창이 열리게 됩니다. 리스트 두 번째 것이 Control 인데요. 거기서 Signature 와 ID 를 집어넣으세요. 제가 올리는 예제에서는 mVue, 130 입니다.

작업이 끝나셨으면 사과+S 하셔서 세이브 하시고 사과+Q 로 인터페이스 빌더를 빠져나갑니다.

그림 그려주는 루틴들은 메인 루틴하고 따로 떨어뜨려 놓는 것이 깔끔하고 보기 좋겠지요? 그 전에 main.c 의 HandlerNew() 라는 이름의 함수에 약간의 변경이 필요합니다. 이렇게 합니다.

    // Install a command handler on the window. We don't use this handler yet, but nearly all
    // Carbon apps will need to handle commands, so this saves everyone a little typing.

    InstallWindowEventHandler( window, GetWindowEventHandlerUPP(),
                               GetEventTypeCount( kWindowEvents ), kWindowEvents,
                               window, NULL );

// 이것이 새로 집어넣은 이벤트 핸들러 등록 루틴 ***
        InstallMyDraw( window ) ;
        
    // Position new windows in a staggered arrangement on the main screen
    RepositionWindow( window, NULL, kWindowCascadeOnMainScreen );
    
    // The window was created hidden, so show it
    ShowWindow( window );


그리고 main.c 맨 위에, #include <Carbon/Carbon.h> 바로 밑에 다음과 같이 넣습니다.

#include <Carbon/Carbon.h>

#include "MyDraw.h"


그러면 이제부터는 MyDraw.c 를 만들 차례지요. 프로젝트 창에 "Sources" 라는 폴더를 선택한 상태에서 File->New File 을 선택합니다. 그러면 새로 파일 등을 프로젝트에 추가할 수 있는 창이 나옵니다. 거기서 Carbon 리스트의 C File 을 선택합니다. 그리고 이름을 MyDraw.c 로 합니다. 덤으로 MyDraw.h 도 같이 만들어 달라고 합니다.

이제 다음의 소스를 복사해 넣으세요. ㅡㅡ;;;


--- MyDraw.h ---

#include <Carbon/Carbon.h>


void InstallMyDraw( WindowRef window ) ;
OSStatus MyDrawEventHandler( EventHandlerCallRef myHandler,
                                                                        EventRef event,
                                                                        void *userData ) ;
void MyDraw( WindowRef window ) ;


--- MyDraw.c ---

#include "MyDraw.h"

HIViewRef myHIView ;

void InstallMyDraw( WindowRef window )
{

        HIViewID myHIViewID = { 'mVue', 130 } ;
        EventTypeSpec        myHIViewSpec[] = {
        { kEventClassControl, kEventControlDraw },
        } ;
        OSStatus err ;
        
        HIViewFindByID( HIViewGetRoot( window ), myHIViewID, &myHIView ) ;
        
        err = InstallEventHandler( GetControlEventTarget( myHIView ),
                                                           NewEventHandlerUPP( MyDrawEventHandler ),
                                                           GetEventTypeCount( myHIViewSpec ),
                                                           myHIViewSpec,
                                                           (void *)myHIView,
                                                           NULL ) ;
        
}


OSStatus MyDrawEventHandler( EventHandlerCallRef myHandler,
                                                                        EventRef event,
                                                                        void *userData )
{

        OSStatus err = eventNotHandledErr ;
        
        switch( GetEventClass( event ) ) {
                case kEventClassControl :
                {
                        switch( GetEventKind( event ) )
                        {
                                case kEventControlDraw:
                                        MyDraw( (WindowRef)userData ) ;
                                        break ;
                        }
                        break ;
                }

                default:
                        break ;
        }
        
        return err ;
        
}


void MyDraw( WindowRef window )
{
        
        Point        thePenSize = { 10, 10 } ;
        FMFontFamily        fontFamily ;
        
        SetPortWindowPort( window ) ;
        
        MoveTo( 20, 30 ) ;
        Line( 100, 0 ) ;
        
        SetPortPenSize( GetWindowPort( window ), thePenSize ) ;
        MoveTo( 20, 50 ) ;
        Line( 100, 0 ) ;
        
        PenNormal() ;
        MoveTo( 20, 70 ) ;
        Line( 100, 0 ) ;
        
        fontFamily = FMGetFontFamilyFromName( "\pTimes" ) ;
        TextFont( fontFamily ) ;
        TextFace( normal ) ;
        MoveTo( 20, 100 ) ;
        DrawString( "\pThis is 12 point, normal, Times" ) ;
        
        fontFamily = FMGetFontFamilyFromName( "\pVerdana" ) ;
        TextFont( fontFamily ) ;
        TextFace( bold + italic ) ;
        MoveTo( 20, 130 ) ;
        DrawString( "\pThis is 12 point bold and italic Verdana" ) ;
        
        TextFace( normal ) ;
        TextSize( 24 ) ;
        MoveTo( 20, 160 ) ;
        DrawString( "\pThis is 24 point normal Verdana" ) ;
        
}


이렇게 하고 나서 Build and Go 라는 두 번째 망치 아이콘을 클릭하면 열심히 컴파일한 다음 화면에 무엇인가 출력을 하게 될 것입니다.

잘 안된다고요? 컴파일 도중 문법 에러가 났다면 뭔가 잘못 갖다붙힌 것이고요, 컴파일은 다 되었는데 화면에 아무것도 안 나온다 하면 NIB 의 HIView 가 잘못 설정되었기 때문입니다. ^^ 일단 이 첫 번째 과정을 깔아야지 두 번째 단계로 넘어갈 수 있으니 함 잘 해보세요. ㅎㅎㅎ (누구한테 이 말을 하는지 알죠? ㅎㅎㅎ)
애플 제품 구매 애플 교육할인 구매
짧은 주소  http://j.mp/gXCGEE  

댓글댓글 : 13   
악동시니
2005-12-16 12:43:14
누구한테 하는데요..궁금하네..
악동시니
2005-12-16 12:43:51
그림 그리기인가.. 집에가서 함해보죠..
악동시니
2005-12-16 12:44:28
누군가 대충은 알것 같은데..
악동시니
2005-12-16 12:44:40
올만에 글을 올리니..흐흐흐..
악동시니
2005-12-16 12:44:51
이양 하시는거 전부다 해주심은...
악동시니
2005-12-16 12:45:15
코코아는 없나요..
악동시니
2005-12-16 12:45:44
근데 소스 복사해서 넣으면.. 아무런 의미 없는거 아닌가요.. 직접 만들어보야지.. 흐흐흐..
악동시니
2005-12-16 12:45:58
소스는 예제에 많다는..
악동시니
2005-12-16 12:50:46
집에가서 해보고 안되면 질문드리죠.ㅋㅋㅋㅋ
준범이
2005-12-16 13:30:17
기대도 안했건만....

감사합니다 ^^
악동시니
2005-12-16 13:51:36
홍준님 이참에 공부좀 하게..팍팍 올려주삼.. 그럼.. 겁나 좋을것같삼..흐흐흐.. 나도 얼른 파부기를 모셔와야..흐흐흐..
악동시니
2005-12-16 23:07:26
홍준님 에러만 팍팍 나는데요..흐흐흐.
준범이
2005-12-16 23:53:59
잘만 되는구만요 ^^
고맙습니다




케이머그 이용 규정안내

신규사용자 이용안내

레벨제도 소개

Xcode 2.2 에서 카본 프로그램 만들자 (1) [지식 : 팁사용기] KMUG  
번호 제목 글쓴이 조회수 날짜
182
 데스크탑 화면 바꾸어 보기    베리 3263 2005/12/29
9:20 am
.
181
 환경설정-화면해상도 조절하기    베리 3014 2005/12/28
9:34 am
.
180
 환경설정에서 에너지절약 사용하기    베리 1981 2005/12/26
4:23 pm
.
179
 개인에 필요에 맞도록 시스템 환경설정하기    베리 2859 2005/12/24
8:54 pm
.
178
 dock에 자주 사용하는 프로그램 추가하기 덧글2    베리 2458 2005/12/24
8:53 pm
.
177
 dock 사용자 하기    베리 2232 2005/12/24
8:52 pm
..
176
 동영상 강좌 - 파인더 아이콘 바꾸어 보기    베리 2725 2005/12/22
1:47 pm
.
175
 동영상이 안보이시는 분...^^    베리 2513 2005/12/21
9:47 am
맥 사파리에서는 문제가 없는데요. 원도우 피씨에서 익스플로어에서 화면이 안보이네요. F5를 눌러서 새로고침을 여러번 하시기 바랍니다. 3-4번 하면 보여요... 원인은 분석중인데...꼭 찾아내겠습니다. ^^ 베리.
174
 동영상 강좌 - 파인더 원도우 사용자화 하기    베리 2634 2005/12/21
12:02 am
.
173
 동영상 강좌 - 휴지통 사용하기    베리 2490 2005/12/21
12:00 am
.
172
 동영상 강좌 - 빠른 파일 찾기    베리 2560 2005/12/20
11:59 pm
.
171
 동영상 강좌 - 홈폴더 사용하기    베리 2163 2005/12/20
11:57 pm
.
170
 동영상 강좌 - Mac os Dock 사용하기 덧글1    베리 3218 2005/12/20
11:55 pm
.
169
 동영상 강좌 - 파인더 사용하기 덧글2    베리 2356 2005/12/20
11:54 pm
.
168
 동영상 강좌 - 주소록 사용해보기    베리 2540 2005/12/20
11:03 am
.
167
   응용문제 덧글1 이미지    hongjuny 2021 2005/12/20
1:19 am
예전에 대입 학력고사에 본고사가 있던 시절, 서울대 본고사 문제에 나왔다는 전설의 그 문제! 사이클로이드라는 것이 있습니다. 이 예제는 사이클로이드와 똑같지는 않지만 대략 비슷한 원리입니다. 자전거 바퀴살에 불을 하나 달고 밤...
166
 Xcode 2.2 에서 카본 프로그램 만들자 (3) 덧글2 이미지    hongjuny 3179 2005/12/19
7:52 am
이번에는 본격적으로 Quartz 의 Core Graphics 를 이용해서 그림을 그려 보겠습니다. 참고 자료로는 애플 홈페이지에서 다운로드 받으실 수 있는 Quartz 2D Programming Guide 입니다. 프로그램의 기본 구조는 이...
165
 Xcode 2.2 에서 카본 프로그램 만들자 (2) 덧글9    hongjuny 1903 2005/12/17
11:35 am
윈도우 프로그래밍을 처음 공부한ㄴ 사람들이 한결같이 내놓는 불만은 "왜 이렇게 어렵냐?" 라는 것입니다. 막말로, C 에서는 printf("Hello Worldn") ; 요거 하나만 하면 글을 볼 수 있는데, 윈도우에서는 글...
 Xcode 2.2 에서 카본 프로그램 만들자 (1) 덧글13    hongjuny 2268 2005/12/16
12:32 pm
Xcode 새 버젼의 카본 어플리케이션 템플릿이 좀 더 친절해졌더군요. 한편, 지금까지 자기 고유의 이벤트 핸들러를 갖고 계시던 분들에게는 더 힘들어 졌더군요. ㅠㅠ 자 해 봅시다. 일단. Xcode 를 실행하고, File->N...
163
사용기  [Apple] Mac mini 리뷰 덧글9 이미지    김영권 11275 2005/12/15
11:25 am
2005년 1월 11일. 애플은 세계를 깜짝 놀라게 할 만한 새로운 매킨토시 시스템인 Mac mini를 발표하였다. Mac mini 가 발표된후 지금까지 경험할 수 없었던 슬림한 사이즈로인해 많은 화제를 불러일으켰다. 슬림한 사...



KMUG서비스안내    비욘드테크소개    광고/제휴    연락처/오시는길    공지사항    회원레벨가이드    사이트맵
Copyright ⓒ kmug.co.kr 2000~2019. All rights reserved 개인정보취급방침
지식 : 팁사용기