Microsoft Agent技术应用(4) { // 剪贴板窗口队列发生变化 case WM_CHANGECBCHAIN: hwndRemove = (HWND)wParam; // handle of window being removed hwndNext = (HWND) lParam; if( hwndRemove == g_hNextWnd) { g_hNextWnd = hwndNext; } if( g_hNextWnd) { SendMessage(hwndNext, WM_CHANGECBCHAIN, wParam, lParam); } // 剪贴数据发生变化 case WM_DRAWCLIPBOARD: // 是否自动阅读 if( g_bEnableRead) { // 阅读剪贴板信息 ReadClipText(); } if( g_hNextWnd) { SendMessage(g_hNextWnd,WM_DRAWCLIPBOARD,wParam, lParam); } 获取剪贴板信息并且朗读: void ReadClipText() { if( g_bAgentOK) { // 只有文本文件才朗读 if( IsClipboardFormatAvailable(CF_TEXT)) { if (OpenClipboard(g_hMainWnd)) { LPWSTR pwsz; UINT cch; HGLOBAL hglb; LPSTR lpstr; hglb = GetClipboardData(CF_TEXT); lpstr = (LPSTR)GlobalLock(hglb); cch = lstrlen(lpstr); if( cch > 0)