정말 그렇네요. 저도 처음 알았습니다.
DoubleClick이벤트가
LButtonDown -> LButtonUp .. LButtonDown->LButtonUp 이렇게 두번 click해야 event가 발생하는게 아니라
LButtonDown->LButtonUp->LButtonDown 이렇게 까지하면 Bblclick이벤트가 발생하네요..
OpenDialog가 Close되고 난뒤에 MouseUp이벤트는 TImage에서만 나는게 아니라
어떤 control이라도 바로 밑에 있던 control에서는 MouseUp이벤트가 발생하고 있네요.
--------------------------------------------------------------------------
질문을 보고 좀 생각해 봤는데...
OpenDialog에서 Double-Click하여 File을 선택하였다면
OpenDialog그 Close된 직후에 WM_LBUTTONUP메세지를 한번 걸러주면 될같더군요
그래서 다음과 같이 코딩해보니.. 그럭저럭 되더군요
( 문제의 소지가 좀 있는 코드이긴 하지만...)
void SkipMouseUpMessage()
{
unsigned int btn=GetKeyState(VK_LBUTTON);
if(btn>1)
{
tagMSG msg;
while(true)
{
PeekMessage(&msg, NULL, 0,0, PM_REMOVE);
if(msg.message == WM_LBUTTONUP)return;
TranslateMessage(&msg);
DispatchMessage(&msg);
if(msg.message==WM_LBUTTONDOWN || msg.message==WM_NCLBUTTONDOWN)return;
}
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute())
{
SkipMouseUpMessage();
//원하는 코딩 ...
}
}
그럼...
김정현 님이 쓰신 글 :
: 제목에 써 있는데로
:
: OpenDialog에서 파일을 더블클릭하여 선택하면,
:
: 뒷 배경에 있던 TImage에 MouseUp 이벤트가 발생합니다.
:
: 이 MouseUp 이벤트가 발생하지 않게 하거나 다른 방법으로라도
:
: 스킵할 수 있는 좋은 방법이 없을까요?
|