Столкнулся с проблемой выбора Item в CListViewCtrl
Пытаюсь разобраться с библиотекой WTL. Создал .rc файл который отвечает за диалоговое окно поиска файлов. Далее в определенной области указываю, где создается CListViewCtrl. И заполняю его. Но не знаю как получать сообщение, о нажатии на определенный Item. Подскажите пожалуйста, что добавить/убрать, или все же стоит создавать уже готовый ListView в окне создания ресурсов Visual Studio, и потом уже добавлять туда элементы. Если да, то хотелось бы получить источники для прочтения. Ниже приведен код.
MyDialogBar который обрабатывает нажатия на созданный через окно создания ресурсов Visual Studio
#include <thread>
#include "resource.h"
#include "resource2.h"
#include "MyListView.h"
class MyDialogBar:public CDialogImpl<MyDialogBar>
{
public:
enum { IDD = IDD_MYDIALOGBAR };
BEGIN_MSG_MAP(MyDialogBar)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_COMMAND,OnCommand)
MESSAGE_HANDLER(WM_CLOSE,OnCloseCmd)
END_MSG_MAP()
LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
CString parameter = TEXT("C:\\Users\\Огурчик\\Desktop\\");
switch (wParam)
{
case IDC_BUTTON_EXIT:
OnCloseCmd(uMsg,wParam,lParam,bHandled);
return 0;
case IDC_BUTTON_APPLY:
ListView_DeleteAllItems(this->myListView.m_hWnd);
if (FindThread.joinable())
{
FindThread.detach();
FindThread = std::thread((&MyListView::FindFile),this->myListView, parameter);
}
else
{
FindThread = std::thread((&MyListView::FindFile), this->myListView, parameter);
}
return 0;
case IDC_SEARCH_TEXT_BAR :
GetDlgItemText(IDC_SEARCH_TEXT_BAR, FileName);
return 0;
case IDC_EXTENTION_TEXT_BAR:
GetDlgItemText(IDC_EXTENTION_TEXT_BAR, FileExtention);
return 0;
}
return 0;
}
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
myListView.Create(m_hWnd);
return 0;
}
LRESULT OnCloseCmd(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
if (FindThread.joinable())
{
FindThread.detach();
}
EndDialog(NULL);
return 0;
}
private:
CString FileName;
CString FileExtention;
MyListView myListView;
std::thread FindThread;
};
//Класс который отвечает за создание в определенной области DialogBar CListViewCtrl
#pragma once
#include <atlbase.h>
#include <atlapp.h>
#include <atlmisc.h>
#include <atlwin.h>
#include <atlctrls.h>
#include <atlfile.h>
#include <atlstr.h>
class MyListView:public CListViewCtrl
{
private:
LVITEM lvItem;
CListViewCtrl myListView;
CString path;
int i;
public:
void Create(HWND m_hWnd);
void FindFile(CString szPath);
void View_List(CString buf, int i,CString path);
BOOL InitListViewImage(int size, CString path);
};