全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5144
推到 Plurk!
推到 Facebook!

XE7 可以全域觸控嗎

缺席
etjon
一般會員


發表:14
回覆:12
積分:5
註冊:2002-03-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2014-11-27 09:10:36 IP:59.120.xxx.xxx 訂閱
因自身開發的程式將TImage 設為有觸控的元件,並撰寫程式碼處理,向右向左的功能,但因有特別的需求,可能在這個TImage 
的上方會開另一隻程式撥放影片,但因是隻獨力的程式,所以觸控都沒有反應是正常的,所以想了一個解決的方式,透過HOOK SetWindowsHookEx ,WH_MOUSE_LL
然後將事件寫入TMouseGestureEngine , Notification 但看起來沒有用,請問這需求要如何處理,另外不知道 TMouseGestureEngine 是要如何應用,找不到
這方面的應用,所以我使用了這種方式,大至的問題是全域的觸控反應要如何達成
LRESULT CALLBACK TPlayFullScreenDialog::LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if( nCode == HC_ACTION )
{
TPoint p;
p = PlayFullScreenDialog->FullScreenPlayImage->ScreenToClient(Mouse->CursorPos);
TMessage msg;
msg.Msg = wParam;
msg.WParam = Mouse->CursorPos.x;
msg.LParam = Mouse->CursorPos.y;
PlayFullScreenDialog->m_MouseGestureEngine->Notification(msg);
switch (wParam)
{
case WM_LBUTTONDOWN:
// 按下滑鼠左鍵
if (MainForm->m_MediaBookPlay && MainForm->m_MediaBookPlay->IsRunning())
{
MainForm->m_MediaBookPlay->OnExternalMouseDown(mbLeft, p.X, p.Y);
MainForm->m_MediaBookPlay->SetMoveTimer();
PlayFullScreenDialog->m_MouseGestureEngine->Notification(msg);
}
break;
case WM_LBUTTONUP:
// 放開滑鼠左鍵
if (MainForm->m_MediaBookPlay && MainForm->m_MediaBookPlay->IsRunning())
{
MainForm->m_MediaBookPlay->SetMoveTimer();
PlayFullScreenDialog->m_MouseGestureEngine->Notification(msg);
}
break;
case WM_MOUSEMOVE:
{
// 滑鼠移動中
g_OldX = p.X;
g_OldY = p.Y;
if (g_LastBTDownX != p.X || g_LastBTDownY != p.Y)
{
if (MainForm->m_MediaBookPlay && MainForm->m_MediaBookPlay->IsRunning())
{
MainForm->m_MediaBookPlay->SetMoveTimer();
}
g_LastBTDownX = p.X;
g_LastBTDownY = p.Y;
}
PlayFullScreenDialog->m_MouseGestureEngine->Notification(msg);
break;
}
case WM_MOUSEWHEEL:
// 捲動滾輪
break;
case WM_RBUTTONDOWN:
// 按下滑鼠右鍵"
if (MainForm->m_MediaBookPlay && MainForm->m_MediaBookPlay->IsRunning())
{
MainForm->m_MediaBookPlay->SetMoveTimer();
}
break;
case WM_RBUTTONUP:
// 放開滑鼠右鍵
if (MainForm->m_MediaBookPlay && MainForm->m_MediaBookPlay->IsRunning())
{
MainForm->m_MediaBookPlay->SetMoveTimer();
}
break;
}
}
return CallNextHookEx(g_hhook, nCode, wParam, lParam);
}

附加檔案:54767a0c8a67b_Hook.rar
etjon
一般會員


發表:14
回覆:12
積分:5
註冊:2002-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2014-11-28 10:26:51 IP:218.173.xxx.xxx 訂閱
己自行解決了.
系統時間:2024-11-21 16:38:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!