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
[49207] Re:Re: 서브클래싱했는데.. 메시지 처리 속도가 너무 느립니다.
장성호 [nasilso] 1299 읽음    2007-05-08 18:23
아뇨 뭔가 잘못하신것이 있을겁니다.

아래와 같이 서브클래싱하면  모든 TChart로 가는 window message는
반드시 서브클래싱 함수를 통해 갑니다.

즉 서브클래싱 함수는 TChart 윈도우 메세지 처리의 최고 앞단에 있는것입니다.
그러니 서브클래싱 때문에 느릴수는  없습니다.


그래도 현재 그렇현상이 난다고 하니 추정을 해보면....

- 추정 -
1. 만약  오른쪽 마우스 클릭때 처리하는 작업이 있습니까?
   클릭때 무엇을 많이 처리하게 되면 그 처리끝난후에 더블클릭이벤트가 발생하게 될것입니다.

   더블클릭 윈도우 메세지 발생하기전에
   MouserEnter   ,   MouserDown 등... 여러가지 메세지가 발생합니다.

   이런 메세지에 무엇을 처리하도록 되어있고,   그 처리루틴이 느리다면 그럴수 있을것입니다.


2. TChart말고 다른 곳에서  자원을 잡아먹는  만한 코드는 없습니까?



그러니 아래 코드만을  프로젝트 따로 떼어서 테스트 해보십시요

그럼...





이용태 님이 쓰신 글 :
: 장성호님께서 말씀해주신 방법으로 서브클래싱하여 마우스 오른쪽 더블클릭을 구현했습니다.
:
: SPY++로 찍어보니.. WM_RBUTTONDBLCLK 메시지는 정확히 나오고... 이 메시지에 해당하는 서브클래싱한 함수에서도 결과가 실행이 됩니다.
:
: 근데.. 메시지 처리가 너무 늦습니다. 마우스 오른쪽 더블클릭이후 약 1초 정도 있어야 서브클래싱한 함수가 실행이 됩니다. 실시간으로 처리할 수 있는 방법은 없는건가요?
:
: 없는 이벤트 함수를 사용할려고 해서 이렇게 속도가 느리게 되는건가요?
:
:
:
:
:
:
: 장성호 님이 쓰신 글 :
: : 저는 윈도우 관련해서 안된는것은 서브클래싱을 많이 이용합니다.
: :
: : TChart 에   OnRightDoubleClick 이벤트 같은것이 없으니
: : 윈도우 메세지를 받아서 직접 처리해야 겠죠
: :
: : 아래 샘플입니다.
: : 그래도 쓰셔도 될것입니다.
: :
: : 그럼 ....
: :
: : TForm1 *Form1;
: : //---------------------------------------------------------------------------
: : __fastcall TForm1::TForm1(TComponent* Owner)
: :     : TForm(Owner)
: : {
: : }
: : //---------------------------------------------------------------------------
: : TWndMethod OrigProc1;
: : void __fastcall TForm1::FormCreate(TObject *Sender)
: : {
: :     OrigProc1 = Chart1->WindowProc;
: :     Chart1->WindowProc = ChartProc1;
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::ChartProc1(TMessage& Msg)
: : {
: :      if(Msg.Msg==WM_RBUTTONDBLCLK) //오른쪽 버튼 더블클릭했을때..
: :      {
: :         Chart1RightDblClick(Chart1);
: :      }
: :      OrigProc1( Msg );
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::Chart1RightDblClick(TObject *Sender)
: : {
: :     ShowMessage("오른쪽 더블클릭!");
: : }
: : //---------------------------------------------------------------------------
: :
: :
: :
: : 이용태 님이 쓰신 글 :
: : : 폼이나 TChart에서 보면... 마우스 더블클릭에 대한 이벤트 함수 OnDblClick()이 있는데요..
: : :
: : : 이놈은 기본적으로 왼쪽 마우스 클릭에 대해서만 동작합니다.
: : :
: : : 오른쪽 마우스 클릭에 대해서도 더블클릭을 하고 싶은데요... 어떻게 해야 합니까?
: : :
: : : 답변 부탁드립니다.

+ -

관련 글 리스트
49185 마우스 오른쪽 더블클릭 어떻게 해야 하나요? 이용태 1089 2007/05/07
49188     Re:마우스 오른쪽 더블클릭 어떻게 해야 하나요? 장성호 1568 2007/05/08
49202         Re: 서브클래싱했는데.. 메시지 처리 속도가 너무 느립니다. 이용태 1097 2007/05/08
49207             Re:Re: 서브클래싱했는데.. 메시지 처리 속도가 너무 느립니다. 장성호 1299 2007/05/08
49191         Re:Re:마우스 오른쪽 더블클릭 어떻게 해야 하나요? 이용태 1353 2007/05/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.