void CTestDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
DWORD   dwPos   =   GetMessagePos();  
CPoint   point(   LOWORD(dwPos),   HIWORD(dwPos)   );  
m_list.ScreenToClient(&point);    
LVHITTESTINFO   lvinfo;  
lvinfo.pt   =   point;  
lvinfo.flags   =   LVHT_ABOVE;  
int   nItem   =   m_list.SubItemHitTest(&lvinfo);  
if(nItem   !=   -1)  
{  
for(int i=0;i<m_list.GetItemCount();i++)
{
if(lvinfo.iItem==2)
{
//ShellExecute(NULL,_T("open"),szPath,NULL,NULL,SW_SHOW);
MessageBox(_T("ok"));
// break;
}
}


*pResult = 0;
}如果注释掉那个break,在双击表格第三行的时候会弹MessageBox,关掉MessageBox后会继续弹,就像死循环一样。有break就正常了,只弹一次。这是为什么?
另外,Unicode 字符集与多字节字符集有啥区别?

解决方案 »

  1.   

    按你这样的写法,就是有多少Item就显示多少次MessageBox。
      

  2.   

    因为,这正是break的作用……
      

  3.   

    谢谢,第一个问题搞明白了。
    第二个问题“Unicode 字符集与多字节字符集有啥区别”指的是编程的时候的区别。
      

  4.   

    Unicode对应的是WCHAR,每个字符2字节,使用结尾是W的函数;多字节对应的是char,每个ASCII码字符1字节,汉字两字节,用字节数作为字符数,使用结尾是A的函数;如果你用TCHAR、LPTSTR等类型,可以自动适应项目的字符集设置。