2013-08-21 74 views
0

我有一個自寫的Windows控件,用C++/mfc42/visual studio 6編寫。控件是從CStatic控件派生而來的,並對wm_lbuttondown/wm_lbuttonup作出反應。該控件被編譯成一個dll。該DLL被動態加載到一個應用程序,它是用delphi 7編寫的。到目前爲止,所有的工作/工作都可以使用多年(在win xp/vista/win 7下)。在Windows 8觸摸屏下缺少wm_lbuttondown

問題是:在acer iconia w3-810上的windows 8下,當我通過觸摸屏觸摸控件時,控件不會收到wm_lbuttondown/wm_lbuttonup消息。當你用鼠標單擊控件時,一切都按預期工作,只有觸摸不起作用。

另外:這隻發生在控件在dll內部使用時。當我嘗試使用獨立版本的控件(一個.exe文件而不需要外部DLL)時,控件在接觸到它時會收到wm_lbuttondown/wm_lbuttonup消息。

當我嘗試在Windows 7觸摸屏設備(一些聯想)下它通過觸摸正常工作!

另一個信息:當我觸摸我得到其他無證消息而不是WM_LBUTTONDOWN/WM_LBUTTONUP ...的messagecodes是(十進制)585,582,581,583和586 ......

贏下8的控制

有任何想法可能會導致這種情況?

+0

也許低至15歲以上的MFC。你爲什麼不使用現代工具。 –

+0

您未公開的消息有點接近WM_TOUCH。我想不出什麼來推測雖然.. –

+2

謝謝,我現在發現,消息是WM_POINTERENTER,WM_POINTERDOWN,WM_POINTERUPDATE,WM_POINTERUP,WM_POINTERLEAVE – user2703897

回答

0

我發現了這個問題。 Delphi控件的Delphi包裝代碼是爲DLL控件設置另一個WndProc,並且在這個新的WndProc中調用了DefWindowProc,這導致了Windows 8/Touchscreen下的問題。