C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[38150] Re:GDI와 GDI+를 같이 사용하여 프로그래밍을 하신분 계신가요?
김태선 [jsdkts] 1449 읽음    2004-11-25 10:02
원래 GDI+는 말그대로 GDI를 쓰면서 GDI+를 같이 쓰는 것입니다.
밑에 과정은 잘된 것 같네요. 제일 좋은 자료는 C++빌더 저널에 있는 자료입니다.
STRICT는 꼭 Option에 넣어주어야 합니다.
내부 소스를 살펴보진 않아서 정확한 역할은 모릅니다만,
이건 GDI+를 위한 조건 컴파일을 조정해주므로 반드시 넣어야 제대로된 컴파일을 합니다.
만일, 에러가 난다면 자료실에 있는 GDI+ 파일들 받아서 그것으로 컴파일 해보시는게 어떨까요.
저는 지금 잘 쓰고 있습니다.

그럼..

박상훈 님이 쓰신 글 :
: 안녕하세요.
: 이번에 GDI+에 관한 내용을 포럼에서 본후 프로그램을 수정하려고 합니다.
: 테스트 도중에 알지 못하는 문제가 발생해서 질문을 올립니다.
:
: 혹시 GDI와 GDI+를 같이 사용하여 프로그래밍을 하신분 계신다면, 비슷한 문제를
: 해결하신 분이 계시면 답변 부탁드립니다.
:
: 기존 프로그램은  GDI에서 제공하는 기본 메소드를 이용해서 프로그래밍을 했습니다.
: 이번에 GDI+를 이용해 보려고 세팅을 했는데 에러가 발생했습니다.
: 포럼 Resoirces에 올린 GDI+에 관한 저널 혹은 Tip에 올린 글을 보신분이라면
: 이해하시기 쉽겠네요.
:
: GDI+는 graphics의 개체를 얻어서 수행됩니다. GDI와 좀 틀리게 사용하죠.
:
: 밑에 글과 같이 설정을 하고 컴파일을 돌렸습니다. 
: -----------------------------------------------------
: 정성훈.해미 님이 답글(37378번)에서 말씀하신  journal에 보니 자세히 설명되어 있을뿐만 아니라 예제까지 있던데요.
: 1. gdiplus.h를 #include하고
: 2. 1을 하면 min과 max 함수부분에서 오류가 나므로 gdiplustypes.h 헤더 파일에서 std::min / std::max로 하든지 Gdiplus namespace 초입에서 using std::min; using std::max로 함. 다시 말해, 이 부분에 있어서 잘못되어 있으므로 헤더 파일을 수정해야 함.
: 3. STRICT를 정의해주어야 함. 즉, Projects->Options->Directories/Conditionals 탭의 conditional defines 입력상자에 STRICT를 입력. 현재 아래의 E2015 오류는 STRICT가 정의되어 있지 않아서 발생한 것임.
: 4. using namespace Gdiplus; 또는 Gdiplus namespace의 함수를 사용할 때마다 Gdiplus::를 앞에 붙여줌 또는 필요한 변수나 함수만 using으로 선언해줌.
: 5. static library를 링크해주어야 함. #pragma link "gdiplus.lib"
: 6. gdiplus를 사용하려면 GdiplusStartup()을, 사용이 모두 끝나면 GdiplusShutdown()을 해주어야 함.
: -----------------------------------------------------
:
: STRICT라는 것을 설정하면 이러한 에러메세지가 나타납니다.
:
: 소스 내용은 이렇습니다.
:   HBRUSH hOldBrush;
:    .
:    .
:  hOldBrush = SelectObject(dc, GetStockObject(NULL_BRUSH));  <-- 여기에서 에러
:
: 에러내용: Cannot convert "void *" to "HBRUSH__ *"
: HPEN도 같은 에러가 발생하더군요.
: GDI+관련 책을 참고 했을 때 GDI와 GDI+를 같이 사용할 수 있고, 방법도 제시되어 있었습니다.
: 그건 hdc를 어떻게 가져와서 처리하느냐, 또는 graphics개체에서 hdc를 어떻게 얻어서 사용하느냐..뭐 이렇게
: 핸들을 가져와서 처리하면 된다는 것이었습니다.
: 사실 GDI+는 GDI위에 있는 Layer와 같기 때문에 상관이 없는 것 같습니다.
:
: 옵션에서 STRICT을 제거하면 에러가 나지 않더군요. STRICT가 정확하게 어떤 역활을 하는지도 궁금합니다.
: 저널에는 STRICT가 VCL에 Default로 되어 있지 않기 때문에 GDI+를 사용하기 위해서는 STRICT를 설정해 줘야
: 한다고 써 있습니다.
:
: 글이 정말 기네요. 끝까지 읽어 주셔서 고맙니다.
: 혹시 내용이 이해가 되지 않으시면 리플남겨주세요. 답변을 남겨주시면 정말 감사~

+ -

관련 글 리스트
38144 GDI와 GDI+를 같이 사용하여 프로그래밍을 하신분 계신가요? 박상훈 1828 2004/11/24
38150     Re:GDI와 GDI+를 같이 사용하여 프로그래밍을 하신분 계신가요? 김태선 1449 2004/11/25
38151         답변감사합니다. 하지만 안되는군요. leo21c 978 2004/11/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.