///////////////////////////////////////////////////////////////////////////// // serverDlg.cpp : Implementation of CserverDlg #include "stdafx.h" #include #include "serverDlg.h" #import "..\client\client.tlb" no_namespace using namespace std; extern HWND hDlg; // handle to dialog window, written in server.cpp ///////////////////////////////////////////////////////////////////////////// // Thread Processing Function void __cdecl doTime(void* idThread) { CoInitialize(NULL); IReplyPtr pReply(_T("Client.Reply.1")); BSTR rplStr1 = SysAllocString(OLESTR("1st reply string from server")); BSTR rplStr2 = SysAllocString(OLESTR("---- 2nd reply string from server ----")); int event = 1; try { while(1) { // simulated event Sleep(2000); PostMessage(hDlg,WM_USER_EVENT,0,0); if(event) pReply->Reply(rplStr1); else pReply->Reply(rplStr2); event = (event+1)%2; } } catch(...) { /* client shut down so we need to stop sending msgs */ } SysFreeString(rplStr1); SysFreeString(rplStr2); CoUninitialize(); } // ///////////////////////////////////////////////////////////////////////////// // CserverDlg handler for user defined message LRESULT CserverDlg:: OnUserMsg(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { Beep(3000,100); // audible evidence that we are in handler // for user definded message WM_USER_EVENT // display event count in dialog edit box static unsigned int count = 0; ++count; std::ostringstream temp; temp << "event count = " << count << std::ends; std::string temper = temp.str(); const char *temps = temper.c_str(); SetDlgItemText(IDC_EDIT2,temps); return 1; }