|
선배님들 안녕하십니까
현재 공과대학 4년재에 재학중인 4학년 학생입니다.
MFC로 CListCtrl에 프로세스 목록이 갱신되는 것을 구현하기 위해
처음에는 vector를 썼으나, 데이터를 지우는 것이 용이하지 않다고 하여
map을 쓰라고 하여... 바꾸게 되었고
map에 관해 도무지 자료를 찾기가 힘들어서 선배님들의 도움을 얻고자 합니다..
우선 헤더부분에 제가 정의한 구조체는
typedef struct ProcessMap
{
//boolean Survival;
CString FileName;
int PPID;
int PID;// Key
CString Path;
} _ProcessMap;
입니다.
지금부터가 문제입니다.
본문에 프로세스 값 구하는 쪽에서
map<int, _ProcessMap>mymap; //이렇게 선언하였습니다.( <Key, Value> )
그런데 저는 Key인 PID에 따라 나중에 비교하려고 저렇게 구조체를 선언하였으나,
map의 pair는 한 쌍 밖에 안되기도 하고, PID값에 따라 저것들을 어떻게 집어넣을지가 도무지 모르겠습니다..
제가 한것은 이렇습니다.
(여기서 pe32. 기타 등등은 PROCESSENTRY32와 CreateToolhelp32Snapshot로 얻었습니다.)
_ProcessMap _ProcessMap2;
_ProcessMap2.FileName = (LPCTSTR)pe32.szExeFile;
_ProcessMap2.PPID = pe32.th32ParentProcessID;
_ProcessMap2.PID = pe32.th32ProcessID;
_ProcessMap2.Path = strPath;
pair<int, _ProcessMap> NewItem(pe32.th32ProcessID, _ProcessMap2);
mymap.insert(NewItem);
이렇게 까지 해줬는데 컴파일은 안해봤으며, 값이 제대로 들어있는지도 아직 모르겠습니다..
여기서 받은 값들을 리스트컨트롤에 보이도록 CListCtrl에 출력을 해줘야하는데
i=0;
for (map<int, _ProcessMap>::iterator k = mymap.begin(); k != mymap.end(); advance(k, 1))
{
m_ProcessLIst.InsertItem(i, );
}
여기에서 어떻게 출력을 해야할지 난해합니다..
혹시 저랑 비슷한 경험을 겪으셨거나,
STL Map 에서 구조체를 Map에 선언에 대해 도와주실분은 부탁드리겠습니다...ㅜ.ㅜ
|