2011-10-28 2 views
0

여기 내 문제는 내가 CtrlList이고, PostMessage (asyncron)을 통해 항목을 삽입하고자하므로 메시지가 LVM_INSERT_MESSAGE 일 때 처리되지만, 문제는 내가 LVITEM에 대한 메모리를 할당해야하므로 항목을 삽입하기 전에 느슨하게하지 않아야합니다. 하지만 난 후 함수를 종료 한 후 할당 된 항목에 대한 포인터를 잃어버린. 그리고 insert item은 다른 아이템을 생성하기 때문에, 나는 LVITEM에 할당 된 메모리를 할당 해제하기가 ​​어렵습니다. LVM_INSERT_MESSAGE이 함수를 호출하는 통지에 LVN_INSERT_MESSAGE 통지를 보내지 만, lvitem을 얻을 수있는 유일한 방법은 LPARAM을 던져 때문에CtrlList postmessage 처리 알림을 통해 항목 삽입하기

내 솔루션,하지만 ON_NOTIFY은 (NMHDR *pNMHDR, LRESULT *pResult) 매개 변수가 있습니다. 그 메모리 할당을 해제하기위한 해결책을 줄 수 있습니까? postmessage와 함께 삽입해야합니다. send message 나 function insertitem을 사용하라고 말하지 마십시오. 고맙습니다.

답변

0

사용자 지정 메시지를 다른 창에 게시하고 처리기에서 항목을 추가 한 다음 메모리를 확보하십시오.

목록 컨트롤이 이미 서브 클래 싱 된 경우 다른 창을 사용할 필요가 없으며 메시지를 컨트롤에 직접 보낼 수 있습니다.

+0

고마워, 이건 다른 생각이지만 LVITEM 구조체의 lParam 변수에 할당 된 메모리 포인터를 넣고 LVN_INSERTITEM 메시지가 처리 된 후 마지막으로 가져가는 알림 메시지를 보낸다. 항목의 lParam 변수를 삽입하고 거기에 저장된 메모리 포인터의 할당을 해제합니다. –