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
[42358] 뻥 뚫힌 폼을 만들었는데 폼이 활성화가 될 때마다 엑세스 바이얼레이션 0000000가 뜨네요
error [] 1126 읽음    2005-11-03 13:14
다름이 아니라 캡쳐 프로그램을 제작중입니다.

그리고 캡쳐되는 영역을 지정하기 위해서 구멍이 뚫힌 폼을 사용하기로 했습니다.

그래서 여기서 뚫힌 폼을 만들어주는 예제를 찾아서 쓰는데 문제는 메인 폼에서 이 폼을 호출할 때마다
"Access violation at address 00000000. Read of address 0000000" 이렇게 뜨네요.

대체 뭐가 잘못 된거지 궁금합니다.

프로그램에서 사용되는 모든 폼들은 자동으로 생성되도록 된 상태고(2개뿐. 메인과 영역을 지정하는 폼) 메인폼에서 이 폼을 단지 show합니다.

각각의 코드는 다음과 같습니다.

//메인에서 captureForm을 호출하는 부분
void __fastcall TForm1::Button8Click(TObject *Sender)
{
    CaptureForm->Show();
}

//captureForm의 코드부분. 이외의 코드는 없습니다.
class TCaptureForm : public TForm
{
__published:    // IDE-managed Components
    void __fastcall FormResize(TObject *Sender);
private:    // User declarations
public:        // User declarations
    __fastcall TCaptureForm(TComponent* Owner);
};

void __fastcall TCaptureForm::FormResize(TObject *Sender)
{
    HRGN    WindowRgn, HoleRgn ;
    WindowRgn = 0;
    GetWindowRgn(Handle, WindowRgn);
    DeleteObject(WindowRgn);

    WindowRgn = CreateRectRgn(0,0,Width, Height);
    HoleRgn = CreateRectRgn(10, 30, Width - 10, Height - 10);
    CombineRgn(WindowRgn, WindowRgn, HoleRgn, RGN_DIFF);
    SetWindowRgn(Handle, WindowRgn, false);

    DeleteObject(HoleRgn);
    DeleteObject(WindowRgn);
}


대체 어디가 잘못된걸까요?

+ -

관련 글 리스트
42358 뻥 뚫힌 폼을 만들었는데 폼이 활성화가 될 때마다 엑세스 바이얼레이션 0000000가 뜨네요 error 1126 2005/11/03
42363     Re:뻥 뚫힌 폼을 만들었는데 폼이 활성화가 될 때마다 엑세스 바이얼레이션 0000000가 뜨네요 김상구.패패루 1221 2005/11/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.