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
[48657] Re:Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리
interest [interest] 1996 읽음    2007-03-29 17:29
음.. 질문하신분 윈도우 메세지 이벤트 핸들러에 대한 이해가 조금 부족하신듯합니다.
간단하게 이부분에서 사용하는 OnMessages 이벤트 핸들러 사용법을 알려드리겟습니다.
상세한 정보는 관련정보를 더 찻아보세요.
메세지 이벤트 핸들러 등록은 Head파일에서 해 줘야 합니다.

protected: // 일반적으로 사용하는 것이구요.
    BEGIN_MESSAGE_MAP // 메세지 맵 시작 매크로입니다.
        VCL_MESSAGE_HANDLER(WM_DEVICECHANGE, TMessage, OnMessages) // 메세지 핸들러 등록 OnMessages 라는 메세지 핸들러이름 보이시죠? 이것은 WM_DEVICECHANGE 메세지에 대하여서는 TMessage라는 인자를 가지고 OnMessages 라는 함수에서 처리 하겟다는 뜻입니다.
    END_MESSAGE_MAP(TForm) // 메세지맵 매크로 종료.  이렇게 하면 TForm으로 들어오는 WM_DEVICECHANGE 메세지에 대하여 핸들러 등록완료입니다.

만약 다른 메세지에 대해서도  OnMessages에서 처리하겟다 하시면  BEGIN_MESSAGE_MAP과  END_MESSAGE_MAP 사이에 아래와 같이 추가 해주시면 됩니다.     BEGIN_MESSAGE_MAP
        VCL_MESSAGE_HANDLER(WM_DEVICECHANGE, TMessage, OnMessages)
        VCL_MESSAGE_HANDLER(다른메세지이름, TMessage, OnMessages)  // 추가할 메세지 핸들러.
    END_MESSAGE_MAP(TForm)
물론 다른 메세지 이벤트 핸들러를 쓰시겟다면 OnMessages 이름만 변경해주고 cpp 에 함수 추가해 주면 되겟지요. 우선 이것은 생각하지 마시고 아래부분 적용해 보시기 바랍니다.

이것을 적용하는 방법은요. 헤드파일의 클래스 안에서 적어 주심 됩니다.
제가 쓴 해드파일 요약해서 올려드릴께요.

//---------------------------------------------------------------------------
class TComPortForm : public TForm
{
private:
.
.
.
__published:    // IDE-managed Components
.
.
.
public:        // User declarations
    __fastcall TComPortForm(TComponent* Owner);
    __fastcall ~TComPortForm();
    void __fastcall OnMessages(Messages::TMessage &Message);  // 핸들러 선언부. 필수입니다.
.
.
.
__published:
    __property int EndPortNo  = { read=GetEndPortNo, write=SetEndPortNo, default=100 };
    __property int StartPortNo  = { read=GetStartPortNo, write=SetStartPortNo, default=1 };
// 위에 class 선언부 빼고는 제 소스 해더 파일 너무길어서 대충 짤라 낸것입니다.

protected: // 이부분입니다. class TComPortForm 안에 아래구문 적어주시면 됩니다.
    BEGIN_MESSAGE_MAP
        VCL_MESSAGE_HANDLER(WM_DEVICECHANGE, TMessage, OnMessages)
    END_MESSAGE_MAP(TForm)
}; // end of class TComPortForm 입니다.

헤더 파일은 이렇게 정의하시구요. 실제로 OnMessages 소스(이전에 올려드린거)는 cpp 화일안에 두시면 됩니다. 물론 클래스 명은 님의것으로 해야겟지요.

즐겁게~ 님이 쓰신 글 :
: 답변주신대로 OnMessages() 사용을 시도하고 있습니다.
: 그런데 OnMessages() 적용이 제대로 안되지 않나 생각이 들어서요...
:
: 제가 만든 폼에서 이벤트를 확인하면, OnMessages()란 이벤트가 없습니다.
: (비슷한 것도 없구.. ㅠ.ㅠ)
: 그래서 통신하는 폼이 있는 곳에서 그 이벤트를 추가를 해보았습니다.
: 그렇게 적용하는 것이 맞는지...
:
: 그리고, 도움말에서 OnMessages는 검색이 안되고, OnMessage로 검색되어
: void __fastcall TStartMain::FormCreate(TObject *Sender)
: {
:     Application->OnMessage = AppMessage;
: }
: void __fastcall TStartMain::AppMessage(tagMSG &Msg, bool &Handled)
: {
: }
: 같은 방법으로도 적용을 해보았습니다.
:
: 그런데, 위의 두 가지 방법 모두 이벤트가 발생되지 않는걸보면
: 적용이 잘못된거 같은 생각이 들기도 합니다.
: 죄송스럽지만, OnMessages 적용 방법에 대한 설명도 부탁드릴게요~ ^^;;

+ -

관련 글 리스트
48629 [질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 즐겁게~ 1468 2007/03/28
48632     Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 interest 2767 2007/03/29
48645         Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 즐겁게~ 1643 2007/03/29
48657             Re:Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 interest 1996 2007/03/29
48660                 Re:Re:Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 즐겁게~ 1491 2007/03/29
48666                     Re:Re:Re:Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 interest 2246 2007/03/29
48671                         정말 감사드립니다~ 즐겁게~ 1305 2007/03/30
48640         Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 질문이 1870 2007/03/29
48668             Re:Re:Re:[질문] USB to Serial에서 연결 된 USB가 빠진 경우 오류 처리 interest 2365 2007/03/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.