CASE WMP_DOREQUEST: hAtomTable = WinQuerySystemAtomTable(); /* Get atom table handle */ ReqAtom = (ATOM)mp1; /* Get atom for request */ hRequester = (HWND)mp2; /* Get requester handle */ ulLength = WinQueryAtomLength(hAtomTable, /* Get size of string */ ReqAtom); szRequest = malloc(ulLength); /* Allocate buffer */ WinQueryAtomName(hSysAtomTable, /* Get string from atom */ ReqAtom, /* Atom */ szRequest, /* Buffer for string */ sizeof(szRequest)); /* Size of buffer */ ServiceRequest(szRequest,szReply); /* Complete request */ ReplyAtom = WinAddAtom(hSysAtomTable, /* Add string to table */ szReply); /* String to be added */ WinPostMsg(hRequester, /* Post msg to requester */ WMP_REQUESTCOMPLETE, /* Message class */ (MPARAM)ReplyAtom, /* Atom to access string */ (MPARAM)0); /* Return window handle */ free(szRequest); /* Free request buffer */ return((MRESULT)0); /* Return zero */ break;
This example shows a "server" window procedure receiving and processing Presentation Manager messages.