我有一个自编写的Windows控件,用c ++ / mfc42 / visual studio 6编写。控件派生自CStatic控件并对wm_lbuttondown / wm_lbuttonup作出反应。控件被编译成一个dll。将dll动态加载到用delphi 7编写的应用程序中。到目前为止,所有内容都工作/工作了好几年(在win xp / vista / win 7下)。
问题是:在acer iconia w3-810的Windows 8下,当我通过触摸屏触摸控件时,控件不会收到wm_lbuttondown / wm_lbuttonup消息。 当您使用鼠标单击控件时,一切都按预期工作,只有触摸不起作用。
另外:只有在dll中使用控件时才会发生这种情况。当我尝试使用独立版本的控件(一个.exe文件而不需要外部dll)时,控件确实会在我触摸它时收到wm_lbuttondown / wm_lbuttonup消息。
当我在Windows 7触摸屏设备(一些联想)下试用它时,它可以通过触摸正常工作!
另一个信息:当我在win 8下触摸控件时,我会得到其他未记录的消息而不是wm_lbuttondown / wm_lbuttonup ...消息代码是(十进制)585,582,581,583和586 ......
有人知道可能导致这种情况的原因吗?
答案 0 :(得分:0)
我发现了问题。用于DLL控件的Delphi包装器代码为DLL控件设置了另一个WndProc,在这个新的WndProc中调用了DefWindowProc,导致了Windows 8 / Touchscreen下的问题。