|
장성호님께서 말씀해주신 방법으로 서브클래싱하여 마우스 오른쪽 더블클릭을 구현했습니다.
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()이 있는데요..
: :
: : 이놈은 기본적으로 왼쪽 마우스 클릭에 대해서만 동작합니다.
: :
: : 오른쪽 마우스 클릭에 대해서도 더블클릭을 하고 싶은데요... 어떻게 해야 합니까?
: :
: : 답변 부탁드립니다.
|