DefWindowProc 有关问题

DefWindowProc 问题
m_listctrl.InsertColumn(0, _T("Text"), LVCFMT_LEFT, 50);
static LV_ITEM lvi;

lvi.mask = LVIF_TEXT;
lvi.iItem = 0;
lvi.iSubItem = 0;
lvi.pszText = _T("aaa");
int nItem = m_listctrl.InsertItem(&lvi);

memset(&lvi, 0, sizeof(lvi));
lvi.mask = LVIF_TEXT;
lvi.iItem = 1;
lvi.iSubItem = 0;
lvi.pszText = _T("aaa");
nItem = ::DefWindowProc(m_listctrl.m_hWnd, LVM_INSERTITEM, 0, (LPARAM) &lvi);

上面的代码我插入了2行到m_listctrl, 但是为什么只有m_listctrl.InsertItem(&lvi)插入成功,
::DefWindowProc(m_listctrl.m_hWnd, LVM_INSERTITEM, 0, (LPARAM) &lvi)插入失败?

------解决方案--------------------
DefWindowProc 的 参数 是当前消息队列里的 消息。与你随意给的参数 没用的。
如 你需要 WM_PAINT
那么 DefWindowProc 就是 WM_PAINT 消息发来 参数。

你 任意 给一个 不行的, 要用 SendMessage()。
------解决方案--------------------
DefWindowProc这个函数是默认的窗口处理函数,我们可以把不关心的消息都丢给它来处理。这个函数在处理关闭窗口消息WM_CLOSE时,是调用DestroyWindow函数关闭窗口并且发WM_DESTROY消息给应用程序;而它对WM_DESTROY这个消息是不处理的(考虑为什么?);我们在应用程序中对这个消息的处理是发出WM_QUIT消息。因此WM_CLOSE、WM_DESTROY、WM_QUIT这三个消息是先后产生的。