You send messages with CMC by building a CMC_message structure and passing it to the cmc_send function. Fill in the members of the CMC_message structure depending on the parameters used to invoke cmc_send. For example, if you pass the CMC_LOGON_UI_ALLOWED flag to cmc_send, then you don't need to provide a list of recipients, a subject line, or message text because CMC will query the user for that information.
When you call the cmc_send function, it must provide a session handle, a pointer to a CMC_message structure, any necessary flags, an optional user interface identifier if the flags include the CMC_LOGON_UI_ALLOWED flag, and optional extensions. Once cmc_send returns, you have no further responsibility for sending the message.