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
[19021] Re:빌더에서 시스템 아이콘의 이벤트를 가로채려면 어떻게 해야하죠?
유영인.Chris [cuperido] 1924 읽음    2002-05-30 22:00
방법은 말씀하신 방법이 맞고요.. ^^; 예제만 간략히 첨부하였습니다.

아래 예제는 기존의 기능을 무시하고, 최소화는 맨 왼쪽, 최대화는 중간, 종료는 오른쪽으로 폼을 이동시키는 예제입니다.

간단간단한 설명은 아래에 주석을 붙여 놓았습니다.


[헤더 파일]

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <AppEvnts.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TButton *Button1;
        void __fastcall Button1Click(TObject *Sender);
private:    // User declarations

        // 아래 메세지 처리 함수 정의
        void __fastcall MessageProcess(TMessage &MSG);

        BEGIN_MESSAGE_MAP
          MESSAGE_HANDLER(WM_SYSCOMMAND, TMessage, MessageProcess);
        END_MESSAGE_MAP(TForm);

public:        // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif





[소스 파일]

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{

Form1->Width    = 200;
Form1->Height   = 200;
Form1->Position = poScreenCenter;

}
//---------------------------------------------------------------------------

void __fastcall TForm1::MessageProcess(TMessage &MSG)
{

switch(MSG.WParam) {
   case SC_MINIMIZE : {
     Form1->Left = 0;

     // Dispatch 방지 (작업 진행 방지)
     return;
   }

   case SC_RESTORE : {
     // MAXIMIZE 하였다가 다시 누르면 발생되는 메세지

     // Dispatch 방지 (작업 진행 방지)
     return;
   }

   case SC_MAXIMIZE : {
     Form1->Left = Screen->Width / 2 - Form1->Width / 2;

     // Dispatch 방지 (작업 진행 방지)
     return;
   }

   case SC_CLOSE : {
     Form1->Left = Screen->Width - Form1->Width;

     // Dispatch 방지 (작업 진행 방지)
     return;
   }
}

// Dispatch를 하지 않는 이상은 그 메세지의 처리가 무시됩니다.
// 만약, 위의 SC_MINIMIZE 등에서 Dispatch 처리를 하시면,
// 최소화 작업이 되면서 원하시는 일을 하실 수 있습니다.
TForm::Dispatch(&MSG);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{

// 종료
Form1->Close();

}
//---------------------------------------------------------------------------


사무엘 님이 쓰신 글 :
: 맨날 볼랜드 포럼의 여러분에게 도움만 받구 있어요.
:
: 언제 쯤이나 나도 다른분께 도움을 드릴지...
:
:
:
: 폼에서 맨위에 최소화,최대화,종료 아이콘있죠?
:
: 이걸 누르면 어떤동작을 하죠.
:
: 저는 그 이벤트를 가로채서 다른 동작을 하게 하고 싶어요.
:
: 전에는 WM_SYSCOMMAND 에 대한 처리를 WndProc에서 하면 된다고 알고 있었는데...
:
: 빌더에서는 저걸 도데체 어디에서 구현해야 하는지 통 모르겠읍니다.
:
:
:
: 다른 문제로 벌써 몇번 도움을 받았는데..이번에도 또 도움을 받아야 할것 같습니다.
:
: 아시는 분 제발 도와주세요. 고수님들의 지도와 충고 부탁드립니다. 꾸벅~
:
:

+ -

관련 글 리스트
19014 빌더에서 시스템 아이콘의 이벤트를 가로채려면 어떻게 해야하죠? 사무엘 1021 2002/05/30
19021     Re:빌더에서 시스템 아이콘의 이벤트를 가로채려면 어떻게 해야하죠? 유영인.Chris 1924 2002/05/30
19043         Re:Re:빌더에서 시스템 아이콘의 이벤트를 가로채려면 어떻게 해야하죠? 사무엘 1151 2002/05/31
19046             Re:Re:Re:빌더에서 시스템 아이콘의 이벤트를 가로채려면 어떻게 해야하죠? 유영인.Chris 1011 2002/06/01
19048                 Re:Re:Re:Re:빌더에서 시스템 아이콘의 이벤트를 가로채려면 어떻게 해야하죠? 사무엘 964 2002/06/01
19065                     Re:Re:Re:Re:Re:빌더에서 시스템 아이콘의 이벤트를 가로채려면 어떻게 해야하죠? 유영인.Chris 989 2002/06/03
19066                         Re:Re:Re:Re:Re:Re:빌더에서 시스템 아이콘의 이벤트를 가로채려면 어떻게 해야하죠? 사무엘 1008 2002/06/03
19080                             Re:Re:Re:Re:Re:Re:Re:빌더에서 시스템 아이콘의 이벤트를 가로채려면 어떻게 해야하죠? 유영인.Chris 1016 2002/06/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.