Всем привет. Есть такая проблемка. На форме есть ListBox, у него есть оброботчик двойного клика. По нажатию клавиши Enter программа закрываеться а я хочу чтобы вызывалась ф-ция обработчика двойного клика ListBox. | Код | switch(pMsg->message)//здесь я отлавливаю нажатие enter { case WM_KEYDOWN: if(pMsg->wParam==13) { NMHDR *pNmhdr; LRESULT *pResult; HWND *h; pNmhdr = new NMHDR; pResult = new LRESULT; pNmhdr->hwndFrom = pListControl.m_hWnd; pNmhdr->code = NM_DBLCLK; pNmhdr->idFrom = 1000; OnNMDblclkListFile(pNmhdr, pResult);//обработчик ListBox return true;
|
| Код | void CWorkWithWinrarDlg::OnNMDblclkListFile(NMHDR *pNMHDR, LRESULT *pResult)//обработчик ListBox { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); CString NameFile, MaskOne, MaskTwo, CSRar, CSTmp; CFileFind CurrentFile; bool bWorking; int k, StartPos; HWND *handle;
handle = new HWND; CSRar.Insert(0,_T("rar")); NameFile = pListControl.GetItemText(pNMItemActivate->iItem,0);[size=6]//проблема в том что это поле //NMItemActivate->iItem содержит не правельное значение[/size] MaskOne = this->RootFolder+NameFile; MaskTwo.Insert(0,_T("*")); MaskTwo = this->RootFolder+MaskTwo;// для перехода если найденый файл папка bWorking = CurrentFile.FindFile(MaskTwo.GetBuffer()); while(bWorking) { bWorking = CurrentFile.FindNextFileA(); if(MaskOne==CurrentFile.GetFilePath()) { if(CurrentFile.IsDirectory()) { MaskOne.Insert(MaskOne.GetLength(), _T("\\")); this->RootFolder=MaskOne; FillListControl(); break; } else { StartPos = 0; CSTmp = MaskOne.Tokenize(_T("."),StartPos); CSTmp = MaskOne.Tokenize(_T("."),StartPos); if(CSTmp==CSRar) { break; } else { ShellExecute(*handle,"open",MaskOne.GetBuffer(),NULL,NULL,SW_SHOW); break; } } } } CurrentFile.Close(); *pResult = 0; }
|
Может есть какой-то другой способ это реализовать |