Hi, Tracy -
The DDE-related events (HotLinkAlarm [pbm_ddedata], RemoteExec [pbm_ddeexecute], RemoteHotLinkStart [pbm_ddeadvise], RemoteHotLinkStop [pbm_ddeunadvise], RemoteRequest [pbm_dderequest], RemoteSend [pbm_ddepoke], along with pbm_ddeack, pbm_ddeinitiate, & pbm_ddeterminate) are PB's reflections of DDE events issued by the Windows O/S (Message ID's WM_DDE_ACK, WM_DDE_ADVISE, WM_DDE_DATA, WM_DDE_EXECUTE, WM_DDE_INITIATE, WM_DDE_POKE, WM_DDE_REQUEST, WM_DDE_TERMINATE, & WM_DDE_UNADVISE).
These Windows O/S event messages are issued to/from client windows, not controls residing within windows. There likely isn't anything you can do to change this behavior, but I think you can extend the behavior to do what you're wanting.
If you want a tab control, a DataWindow control or other control to respond to DDE messages, I suggest you consider creating a DDE window service NVO, in which you register a reference to a DragObject (control) that will ultimately receive the DDE messages. In the NVO, you create user events mapped to each of the pbm_ddexxxxxx events, and in each one, trigger a similar event that has been added to the customized control (u_dw, u_tab, etc.). In the window (w_master, or w_sheet, for example) add a function to create/destroy the DDE service NVO object and code in the window's DDE events that checks if the service NVO exists and if so, triggers the event in the registered DragObject.
This may sound overwhelming, but it's pretty easy. Since you're using the PFC, this is the technique the PFC uses to instantiate and manage service objects... so you can look at existing PFC service objects as a guide to see how they're coded.
None of the pbm_ddexxxxxxx events has argument values, which simplifies things. If you trigger the custom DDE user event added to u_dw, for example, you can do with the PowerScript TriggerEvent function, such as: dw_1.TriggerEvent("ue_ddeexecute"). An advantage of this technique is that if the object does not contain the ue_ddeexecute event, the TriggerEvent function fails silently with a return code of -1. You can't pass event arguments using the TriggerEvent PowerScript function, which makes it ideal for this particular scenario.
Regards, John
~~~Tracy