0
我想改變觸摸屏返回的鼠標座標。例如,如果我有一個始終全屏的應用程序,並且用戶觸摸座標(1023,767),那麼我希望鼠標光標位於(799,479)處。它應該是一個簡單的縮放公式,但我似乎無法實現。我試過改變座標PreTranslateMessage
,但它似乎沒有任何效果,不管我設置的值是什麼。MFC:從觸摸屏輸入重新轉換鼠標座標
我需要在應用程序級別執行此操作,因爲我無法訪問驅動程序/控制器級別。
這裏是我的實驗樣品:
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_LBUTTONDOWN ||
pMsg->message == WM_LBUTTONUP ||
pMsg->message == WM_MOUSEMOVE)
{
// In this example, I'm simply reducing the "screen" by half.
// I am expecting that the mouse cursor would always be between
// my touch point and the upper-left corner, with a distance of half.
// But nothing seems to be happening. Is pMsg->pt just "read-only"?
pMsg->pt.x = pMsg->pt.x/2;
pMsg->pt.y = pMsg->pt.y/2;
}
return CDialog::PreTranslateMessage(pMsg);
}
我測試了它,'OnLButtonDown'得到了未改變的座標,所以我在'PreTranslateMessage'中做了什麼沒有效果。不幸的是我沒有太多的Windows編程經驗。我假設這隻能在駕駛員級完成? – Ryuu
您可以隨時在處理程序中執行計算。例如。 OnLButtonDown中(...)。爲什麼不這樣做? – l33t
它不會在應用程序中的多個對話框中工作,因爲會調用錯誤的對話框的OnLButtonDown。翻譯需要更早或更低的水平完成。我想知道是否有可能創建另一個總是「竊取」鼠標輸入並重新傳輸它的應用程序,然後我的原始應用程序纔會收到消息。 – Ryuu