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
[14174] Re:TPanel에 그림을 그렸습니다. 그런데 계속 지워지게 되는데 다시 그려주려면 어떻게..
임승균.구리 [] 1070 읽음    2002-01-07 00:38
안녕하세요
무한 루프도는것은 DefaultProc이 호출 안되서 그런거 같군여..
제가 테스트한 소스를 올려 드리죠.. 참조하세요
그럼 즐거운 하루 되세여..

//-- header --
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TPanel *Panel1;
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall FormDestroy(TObject *Sender);
private:    // User declarations
    TWndMethod OriginalProc;
    void __fastcall PanelProc(Messages::TMessage &msg);
public:        // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

//-- cpp file ---
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    OriginalProc = Panel1->WindowProc;
    Panel1->WindowProc = PanelProc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PanelProc(Messages::TMessage &msg)
{
    OriginalProc(msg);
    if (msg.Msg == WM_PAINT)
    {
        HDC hDC = GetDC(Panel1->Handle);
        Rectangle(hDC, 10, 10, 100, 100);
        ReleaseDC(Panel1->Handle, hDC);
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
    Panel1->WindowProc = OriginalProc;
}
//---------------------------------------------------------------------------


해당화 님이 쓰신 글 :
: Panel위에 Rectangle로 그림을 그렸습니다.
:
: 그런데 이렇게 하면 다른 폼이 위로 올라가거나 하면 지워지게 됩니다.
:
: 현재로서는 TImage나 TPaintBox를 사용할 수가 없어서 TPanel을 사용해야 합니다.
:
: FormPaint는 폼에만 해당하기 때문에 되지 않게 되고
:
: Panel에 WindowProc로 메시지를 받아서 하면 계속 그리면서 무한루푸 꽥!!..
:
: 어케 해야할까요? 알려주심 감사하겠습니다.

+ -

관련 글 리스트
14170 TPanel에 그림을 그렸습니다. 그런데 계속 지워지게 되는데 다시 그려주려면 어떻게.. 해당화 769 2002/01/06
14174     Re:TPanel에 그림을 그렸습니다. 그런데 계속 지워지게 되는데 다시 그려주려면 어떻게.. 임승균.구리 1070 2002/01/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.