|
WM_LBUTTONDOWN 이벤트는 MOUSE를 Down할때 한번만 발생합니다.
마우스를 누르고 있는 상태에서도 마우스를 움직이지 않는다면 어떤메세지도 발생하지 않습니다.
다시 말해 가만히 있으면 어떤 이벤트도 발생하지 않는것입니다.
그래서 TScrollbar의 동작로직을 보려고 pas 코드를 봤는데 .
쩝쩝 어떻게 동작하는지 잘모르겠더구요 (델파이는 문법도 잘 몰라서..)
이상하게 이놈은 WM_LBUTTONDOWN 이벤트는 발생하는데 ..
WM_LBUTTONUP 이벤트는 발생하지 않더군요(각설하고)
그럼 님께서 구현하고자 하는 mouse_down상태를 유지하는경우
자동으로 특정변수의 값을 증가하고자 한다면 어떻게 해야하나?
방법1
timer를 이용해 mouse down되면 up될때까지 주기적으로 특정변수값을 증가시키는 방법
그러나 TTimer를 이용할경우 좀... ...
방법2
그냥 OnMouseDown 이벤트에서 while문 돌리면서 mouse up 될때까지 일정시간간격으로
변수값을 증가시키면 됩니다.
=====================예제=========================================
(방법2 예제)
bool bMouseDown=false;
void __fastcall TForm1::Button2MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
bMouseDown=true;
int icnt=10;
Memo1->Lines->Add("Down ");
while(bMouseDown)
{
Application->ProcessMessages();
Sleep(100);
icnt--;
if(icnt==0)
{
icnt=2;
Memo1->Lines->Add("Pluse ++ "); //이부분에서 특정변수값을 증가시켜주면 됨
//200msec 0.2초마다 이벤트 발생
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2MouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
bMouseDown=false;
}
//---------------------------------------------------------------------------
그럼....
leaderkk 님이 쓰신 글 :
: 버튼이 눌려진 상태면 이벤트가 계속 발생해야 하는 것이 맞는 것 같아서요?
:
: 제가 구현하려고 하는 것이 어떤 버튼이 눌려진 상태면 그 이벤트가 발생하는 동안 특정 변수의 값을 증가 시키려고 합
:
: 니다.
:
: 질문과 답변란에 찾아 봤지만 제가 하려고 하는 것과 비슷한 답변이 없네요.
|