部分代码如下:std::map <HWND, long> g_mesLength;
LRESULT CALLBACK CallWndRetProc(int nCode, WPARAM wParam, LPARAM lParam)
{
CWPRETSTRUCT* cMes = (CWPRETSTRUCT*)lParam;
HWND childHwnd = ::FindWindowEx(cMes->hwnd, NULL, "RichEdit20A", NULL);
if (childHwnd)
{
if (g_mesLength.find(childHwnd) != g_mesLength.end())
{
long length = 1+ ::SendMessage(childHwnd, WM_GETTEXTLENGTH, 0, 0);
//有新消息(消息总长度>上次存储的消息长度)
if (g_mesLength[childHwnd] < length)
{
//处理部分
g_mesLength[childHwnd] = length;   //赋值,跟踪确认赋值成功。
//处理完改变值的大小,可是下次再有新消息时取到的g_mesLength[childHwnd]并没有变。
}
}
}
return CallNextHookEx(g_hhook, nCode, wParam, lParam);

这段代码是在DLL中的,DLL中有一个全局的消息钩子。