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
[50080] Re:Re:Re:폼의 Align = alBottom으로 했을때 태스크바 처리 문제.
장성호 [nasilso] 1118 읽음    2007-07-25 18:37
컨트롤에 이벤트에 없는 메세지를 처리하려면?

1. MESSAGE_MAP 이용하는 방법
2. Sub-Classing
3. Dispatch
4. 기타...

위와 같은 방법이 있을수 있겟네요

1. MESSAGE_MAP은

void __fastcall TForm1::WindowPosChangeProc(TMessage &message );
void __fastcall TForm1::SetTingChangeProc(TMessage &message );


BEGIN_MESSAGE_MAP
      MESSAGE_HANDLER(WM_WINDOWPOSCHANGING,TMessage ,WindowPosChangeProc)
      MESSAGE_HANDLER(WM_SETTINGCHANGE,TMessage ,SetTingChangeProc)
END_MESSAGE_MAP(TForm)


위와같은 식으로 사용합니다.


2. Sub-Classing은?


TWndMethod OrignalWinProc;

//--------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
     OrignalWinProc= this->WindowProc;
      this->WindowProc = NewWindowProc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NewWindowProc(TMessage& Msg)
{
     OrignalWinProc(Msg);
     switch(Msg.Msg)
    {
                 case WM_WINDOWPOSCHANGING:
                        //.....
                       break;
                 case WM_WM_SETTINGCHANGE:
                        //.....
                       break;
    };
}
//---------------------------------------------------------------------------


3. Dispatch
    http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=542 
    요걸 참조하세요
    ; 얼른 봐서 문제없을것 같은데.. 에러 난다니 좀

4.기타
    ****

그럼



조상진 님이 쓰신 글 :
: 안녕하세요.. __);
:
: 답변 정말 감사드립니다.. ㅠ.ㅠ~
:
: 그런데 Form 속성의 이벤트에 있는 메시지를 여쭈어 본거였습니다.
: (OnClose나 OnDestroy 등등요)
:
: 제가 빌더에서 WndProc 사용하는 법을 알지 못하는지라... Form 속성의 이벤트중 하나가 발생하지 않을까 싶어서
:
: 질문 드렸습니다.
:
: WndProc 사용하는법을 1시간 넘게 이곳 게시판에서 뒤지고 있으나 자꾸 오류가 발생해서 그러는데요..
:
: 사용법좀 알려주실수는 없는지요.
:
: 방법은 이걸 사용했습니다.
: --헤더--
:     virtual void __fastcall Dispatch(void *Message);
: --소스--
: void __fastcall TFormBottom::Dispatch(void *Message)
: {
:     TMessage *msg = (PMessage)Message;
:
: 이렇게 했는데 자꾸 TMessage *msg = (PMessage)Message 부분에서 읽기위반이 발생했다고 합니다.
:
: 빌더는 6 입니다.. __);
:
:
: 장성호 님이 쓰신 글 :
: : Form의 Align을 alBottom으로 설정하지않고
: : 그런기능을 구현하려 하는건가요?
: :
: : spy로 보니 아래와 같은 메세지가 발생하네요
: :
: : WM_WINDOWPOSCHANGING
: : WM_GETMINMAXINFO
: : WM_SETTINGCHANGE
: :
: : 위 메세지때 taskbar의 정보를 읽어와서 구현하면 되겠네요
: :
: : 그럼...
: :
: :
: : 조상진 님이 쓰신 글 :
: : : 안녕하세요.. __);
: : :
: : : 빌더를 이용하여 프로그램 작성중 궁금한 점이 생겨서 문의 드립니다.
: : :
: : : 폼을 하나 생성하고 Align 속성을 alBottom으로 해서 데스크탑 화면 바닥에 탁 붙도록 했습니다.
: : :
: : : 그리고 FormShow()에서 데스크탑 화면 사이즈를 얻고, 태스크바(윈도우 시작버튼이 붙어있는것을 지칭하는건데요. 맞는 용어지요?)의 크기를 빼서 해당폼의 Heigh를 변경해 주게 만들었습니다.
: : :
: : : 이렇게 하면 처음 화면에 뜰때는 태스크바를 감추건 크기를 화면 절반만하게 바꾸어놓건 상관이 없는데요.
: : :
: : : 문제는 폼이 뜬 후에 사용자가 태스크바의 상태를 바꿀경우 크기가 애매해집니다.
: : :
: : : Align 속성을 alBottom으로 했을때 사용자가 태스크바의 상태를 변경하면 발생하는 이벤트가 무엇인가요?
: : :
: : : alBottom으로 하면 자동으로 태스크바의 높이에 따라 폼의 위치가 변하는 것을 보면 분명 무슨 이벤트가 있을 것 같은데요?
: : :
: : :
: : : 태스크바를 감추는 방법으로 해결해서는 안됩니다.
: : :
: : : 아시는 분은 초보에게 조언좀 부탁드립니다.. __);
: : :
: : : 그럼 만들고자 하시는 대로 즐프되시기 바랍니다.. ^^

+ -

관련 글 리스트
50077 폼의 Align = alBottom으로 했을때 태스크바 처리 문제. 조상진 1099 2007/07/25
50078     Re:폼의 Align = alBottom으로 했을때 태스크바 처리 문제. 장성호 1100 2007/07/25
50079         Re:Re:폼의 Align = alBottom으로 했을때 태스크바 처리 문제. 조상진 1152 2007/07/25
50080             Re:Re:Re:폼의 Align = alBottom으로 했을때 태스크바 처리 문제. 장성호 1118 2007/07/25
50091                 답변감사드립니다. 조상진 961 2007/07/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.