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
[25943] [질문] TCustomControl 에서 SetFocus 메시지가 안잡히는데요.
Kenny [] 798 읽음    2003-06-15 04:07
TCustomControl을 상속받아 에디터를 만들고 있습니다.

좀 특수한 에디터라 Memo나. RichEdit 등은 상속받아봐야 쓸모가 없고...

암튼.. Caret을 출력하기 위해

Focus를 잡으려 하는데요.. Focus들어오면 Caret이 보이고 나가면 안보이고..

근데.. Message를 Mapping해도 WM_SETFOCUS가 안잡히는군요.

동일한 형식으로 WM_SIZE나 기타 메시지는 잘 잡히는데 유독 WM_SETFOCUS만 안되네요.

게시판 검색해서 모두 살펴봐도 뭐가 잘못된건지......

아래는 골격입니다. 좀 도와주셨으면 합니다..


/////////////////////////////////////////popedit.h

#ifndef PopEditH
#define PopEditH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
//---------------------------------------------------------------------------
class PACKAGE TPopEdit : public TCustomControl
{
private:
    MESSAGE void __fastcall WMSetFocus(TWMSetFocus &Message);
    MESSAGE void __fastcall WMKillFocus(TWMKillFocus &Message);

protected:
public:
    __fastcall TPopEdit(TComponent* Owner);
    __fastcall ~TPopEdit();
__published:


BEGIN_MESSAGE_MAP
    //VCL_MESSAGE_HANDLER(WM_SIZE, TWMSize, WMSize);
    VCL_MESSAGE_HANDLER(WM_SETFOCUS, TWMSetFocus, WMSetFocus);
    VCL_MESSAGE_HANDLER(WM_KILLFOCUS, TWMKillFocus, WMKillFocus);
END_MESSAGE_MAP(TCustomControl);
};
//---------------------------------------------------------------------------
#endif

////////////////////////////////////////popedit.cpp
#include <vcl.h>

#pragma hdrstop

#include "PopEdit.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//

static inline void ValidCtrCheck(TPopEdit *)
{
    new TPopEdit(NULL);
}
//---------------------------------------------------------------------------
__fastcall TPopEdit::TPopEdit(TComponent* Owner)
    : TCustomControl(Owner)
{

}
__fastcall TPopEdit::~TPopEdit()
{
}
//---------------------------------------------------------------------------
namespace Popedit
{
    void __fastcall PACKAGE Register()
    {
         TComponentClass classes[1] = {__classid(TPopEdit)};
         RegisterComponents("Samples", classes, 0);
    }
}
//---------------------------------------------------------------------------

void __fastcall TPopEdit::WMSetFocus(TWMSetFocus& message)
{
    Application->MessageBox("got", "aha", MB_OK);
}

void __fastcall TPopEdit::WMKillFocus(TWMKillFocus& message)
{
    Application->MessageBox("lost", "aha", MB_OK);
}



+ -

관련 글 리스트
25943 [질문] TCustomControl 에서 SetFocus 메시지가 안잡히는데요. Kenny 798 2003/06/15
25944     Re:[질문] TCustomControl 에서 SetFocus 메시지가 안잡히는데요. 임문환.실업자 1103 2003/06/15
25947         DoEnter, OnEnter를 못 쓴 이유.... Kenny 766 2003/06/15
25951             Re:DoEnter, OnEnter를 못 쓴 이유.... 임문환.실업자 865 2003/06/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.