|
FormResize는 __published에 넣으시면 안됩니다.
protected:에 넣으시구요, 아마 FormResize앞에 DYNAMIC이나 virtual이 붙어있을 것 같은데 그것도 빠져있군요...
__publishied에 넣어두면 IDE쪽에서 직접 관리하려고 하기 때문에 생기는 에러가 아닐까 싶네요.
error 님이 쓰신 글 :
: 다름이 아니라 캡쳐 프로그램을 제작중입니다.
:
: 그리고 캡쳐되는 영역을 지정하기 위해서 구멍이 뚫힌 폼을 사용하기로 했습니다.
:
: 그래서 여기서 뚫힌 폼을 만들어주는 예제를 찾아서 쓰는데 문제는 메인 폼에서 이 폼을 호출할 때마다
: "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);
: }
:
:
: 대체 어디가 잘못된걸까요?
|