|
通过PreTranslateMessage截获并打印消息,如果通过触摸屏点击列表框有响应,打印如下语句:
********PreTranslateMessage,msg=0x201*******
OnClickMethodList start,nItem=3...
OnClickMethodList end...
********PreTranslateMessage,msg=0xf*******
********PreTranslateMessage,msg=0xf*******
********PreTranslateMessage,msg=0x200*******
********PreTranslateMessage,msg=0x200*******
********PreTranslateMessage,msg=0x113*******
********PreTranslateMessage,msg=0x113*******
如果通过触摸屏点击列表框没有响应,则打印如下语句:
********PreTranslateMessage,msg=0x201*******
********PreTranslateMessage,msg=0x202*******
********PreTranslateMessage,msg=0x200*******
********PreTranslateMessage,msg=0x113*******
通过打印语句可以得知,此时消息没有继续往下传递到列表框,具体为什么盼望高手来解答。我现在在PreTranslateMessage里做了一些处理,来规避这个问题:
if(pMsg->hwnd == m_MethodList.m_hWnd && pMsg->message == WM_LBUTTONDOWN)
{
LVHITTESTINFO LVHitTestInfo;
LVHitTestInfo.pt = pMsg->pt;
m_MethodList.ScreenToClient(&LVHitTestInfo.pt);
LVHitTestInfo.flags=0;
LVHitTestInfo.iItem = LVHitTestInfo.iSubItem = -1;
//判断点击的位置是否有item
int nReturn = ListView_SubItemHitTest(m_MethodList.m_hWnd, &LVHitTestInfo);
if(nReturn != -1)
{
//具体的处理
}
}//
要把OnClickMethodList里的处理给屏蔽掉,避免重复处理。
哪位高手来解答这个奇怪的问题,多谢了。 |
|