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
[21180] Panel->Handle / GetDC에 관한 질문..
궁금이 [builderlover] 1999 읽음    2002-09-02 16:13
프로그램을 짜다가 궁금한게 있어서 그러는데요.

Form위에 Panel을 하나 올려 놓고 여기다가 사각형을 그리려 합니다.

HDC hDC = GetDC(Panel1->Handle);
MoveToEx(hDC, m_iLeft, m_iTop, NULL);
Rectangle(hDC, m_iLeft, m_iTop, X, Y);
이렇게 하면 그려지잖아요..근데 궁금한 것은

HDC hDC = Panel1->Handle;
MoveToEx(hDC, m_iLeft, m_iTop, NULL);
Rectangle(hDC, m_iLeft, m_iTop, X, Y);
이렇게 하면 절대 안그려지더라구요.. GetDC로 얻은 헨들과 Panel1->Handle과 어떤 차이가 있는지 설명해 주셨으면 고맙겠습니다.
(Panel은 윈도우 컨트롤을 상속받았으므로 막바로 헨들을 hDC에 넣어도 되는것 아닌가요?)

덧붙여서 여쭈어 보고 싶은 것은..
HBRUSH DrawBrush, OldBrush;
DrawBrush = (HBRUSH) GetStockObject(NULL_BRUSH);
OldBrush = (HBRUSH) SelectObject(hDC, DrawBrush);
이렇게 하면 원하고자 하는 투면 브러시가 적용이 되는데..
Panel1->Brush->Style = bsClear;은 적용이 안되던데..


반면 PaintBox경우에는
hdc = PaintBox1->Canvas->Handle;
PaintBox1->Canvas->Brush->Style = bsClear;
SetROP2(hdc, R2_NOT);

MoveToEx(hdc,m_iLeft, m_iTop, NULL);
Rectangle(hdc, m_iLeft, m_iTop, X, Y);
PaintBox의 헨들을 막바로 적용할수 있고 Brush도 api안 써도 적용시킬수 있더군요.

프로그램 짤때마다 이렇게 감으로 짤수도 없는 노릇이고 왜 어떤것은 돼고 어떤것은 안 되는지 설명해 주시면 성은이 망극하겠습니다. 꾸벅~~




+ -

관련 글 리스트
21180 Panel->Handle / GetDC에 관한 질문.. 궁금이 1999 2002/09/02
30460     Re:Panel->Handle / GetDC에 관한 질문.. 김재구 957 2002/09/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.