## # DdeInitialize Function # -------------------------------------------------------------------------------- # The DdeInitialize function registers an application with the Dynamic Data Exchange Management Library # (DDEML). An application must call this function before calling any other Dynamic Data Exchange # Management Library (DDEML) function. # # [*Syntax*] UINT DdeInitialize( LPDWORD pidInst, PFNCALLBACK pfnCallback, DWORD afCmd, DWORD ulRes ); # # pidInst:: [in, out] Pointer to the application instance identifier. At initialization, this parameter # should point to 0. If the function succeeds, this parameter points to the instance # identifier for the application. This value should be passed as the idInst parameter in all # other DDEML functions that require it. If an application uses multiple instances of the # DDEML dynamic-link library (DLL), the application should provide a different callback # function for each instance. # If pidInst points to a nonzero value, reinitialization of the DDEML is implied. In this case, pidInst # must point to a valid application-instance identifier. # pfnCallback:: [in] Pointer to the application-defined Dynamic Data Exchange (DDE) callback function. # This function processes DDE transactions sent by the system. For more information, see # the DdeCallback callback function. # afCmd:: [in] Specifies a set of APPCMD_, CBF_, and MF_ flags. The APPCMD_ flags provide special # instructions to DdeInitialize. The CBF_ flags specify filters that prevent specific types of # transactions from reaching the callback function. The MF_ flags specify the types of DDE # activity that a DDE monitoring application monitors. Using these flags enhances the # performance of a DDE application by eliminating unnecessary calls to the callback function. # This parameter can be one or more of the following values. # APPCLASS_MONITOR # Makes it possible for the application to monitor DDE activity in the system. This flag is for use by # DDE monitoring applications. The application specifies the types of DDE activity to monitor by # combining one or more monitor flags with the APPCLASS_MONITOR flag. For details, see the following # Remarks section. # APPCLASS_STANDARD # Registers the application as a standard (nonmonitoring) DDEML application. # APPCMD_CLIENTONLY # Prevents the application from becoming a server in a DDE conversation. The application can only be a # client. This flag reduces consumption of resources by the DDEML. It includes the functionality of the # CBF_FAIL_ALLSVRXACTIONS flag. # APPCMD_FILTERINITS # Prevents the DDEML from sending XTYP_CONNECT and XTYP_WILDCONNECT transactions to the application # until the application has created its string handles and registered its service names or has turned # off filtering by a subsequent call to the DdeNameService or DdeInitialize function. This flag is # always in effect when an application calls DdeInitialize for the first time, regardless of whether the # application specifies the flag. On subsequent calls to DdeInitialize, not specifying this flag turns # off the application's service-name filters, but specifying it turns on the application's service name # filters. # CBF_FAIL_ALLSVRXACTIONS # Prevents the callback function from receiving server transactions. The system returns # DDE_FNOTPROCESSED to each client that sends a transaction to this application. This flag is equivalent # to combining all CBF_FAIL_ flags. # CBF_FAIL_ADVISES # Prevents the callback function from receiving XTYP_ADVSTART and XTYP_ADVSTOP transactions. The system # returns DDE_FNOTPROCESSED to each client that sends an XTYP_ADVSTART or XTYP_ADVSTOP transaction to # the server. # CBF_FAIL_CONNECTIONS # Prevents the callback function from receiving XTYP_CONNECT and XTYP_WILDCONNECT transactions. # CBF_FAIL_EXECUTES # Prevents the callback function from receiving XTYP_EXECUTE transactions. The system returns # DDE_FNOTPROCESSED to a client that sends an XTYP_EXECUTE transaction to the server. # CBF_FAIL_POKES # Prevents the callback function from receiving XTYP_POKE transactions. The system returns # DDE_FNOTPROCESSED to a client that sends an XTYP_POKE transaction to the server. # CBF_FAIL_REQUESTS # Prevents the callback function from receiving XTYP_REQUEST transactions. The system returns # DDE_FNOTPROCESSED to a client that sends an XTYP_REQUEST transaction to the server. # CBF_FAIL_SELFCONNECTIONS # Prevents the callback function from receiving XTYP_CONNECT transactions from the application's own # instance. This flag prevents an application from establishing a DDE conversation with its own # instance. An application should use this flag if it needs to communicate with other instances of # itself but not with itself. # CBF_SKIP_ALLNOTIFICATIONS # Prevents the callback function from receiving any notifications. This flag is equivalent to combining # all CBF_SKIP_ flags. # CBF_SKIP_CONNECT_CONFIRMS # Prevents the callback function from receiving XTYP_CONNECT_CONFIRM notifications. # CBF_SKIP_DISCONNECTS # Prevents the callback function from receiving XTYP_DISCONNECT notifications. # CBF_SKIP_REGISTRATIONS # Prevents the callback function from receiving XTYP_REGISTER notifications. # CBF_SKIP_UNREGISTRATIONS # Prevents the callback function from receiving XTYP_UNREGISTER notifications. # MF_CALLBACKS # Notifies the callback function whenever a transaction is sent to any DDE callback function in the # system. # MF_CONV # Notifies the callback function whenever a conversation is established or terminated. # MF_ERRORS # Notifies the callback function whenever a DDE error occurs. # MF_HSZ_INFO # Notifies the callback function whenever a DDE application creates, frees, or increments the usage # count of a string handle or whenever a string handle is freed as a result of a call to the # DdeUninitialize function. # MF_LINKS # Notifies the callback function whenever an advise loop is started or ended. # MF_POSTMSGS # Notifies the callback function whenever the system or an application posts a DDE message. # MF_SENDMSGS # Notifies the callback function whenever the system or an application sends a DDE message. # ulRes:: Reserved; must be set to zero. # # *Returns*:: If the function succeeds, the return value is DMLERR_NO_ERROR. # If the function fails, the return value is one of the following values: # DMLERR_DLL_USAGE # DMLERR_INVALIDPARAMETER # DMLERR_SYS_ERROR # --- # *Remarks*: # An application that uses multiple instances of the DDEML must not pass DDEML objects between # instances. # A DDE monitoring application should not attempt to perform DDE operations (establish conversations, # issue transactions, and so on) within the context of the same application instance. # A synchronous transaction fails with a DMLERR_REENTRANCY error if any instance of the same task has a # synchronous transaction already in progress. # The CBF_FAIL_ALLSVRXACTIONS flag causes the DDEML to filter all server transactions and can be changed # by a subsequent call to DdeInitialize. The APPCMD_CLIENTONLY flag prevents the DDEML from creating key # resources for the server and cannot be changed by a subsequent call to DdeInitialize. # There is an ANSI version and a Unicode version of DdeInitialize. The version called determines the # type of the window procedures used to control DDE conversations (ANSI or Unicode), and the default # value for the iCodePage member of the CONVCONTEXT structure (CP_WINANSI or CP_WINUNICODE). # Windows 95/98/Me: DdeInitializeW is supported by the Microsoft Layer for Unicode (MSLU). To use this, # you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows # 95/98/Me Systems . # # --- # Enhanced (snake_case) API: # # :call-seq: # success = dde_initialize(pid_inst, pfn_callback, af_cmd, ul_res) # function :DdeInitialize, [:LPDWORD, :PFNCALLBACK, :DWORD, :DWORD], :UINT describe "#dde_initialize" do spec{ use{ success = DdeInitialize(pid_inst=0, pfn_callback=0, af_cmd=0, ul_res=0) }} spec{ use{ success = dde_initialize(pid_inst=0, pfn_callback=0, af_cmd=0, ul_res=0) }} it "original api registers an application with the Dynamic Data Exchange Management Library " do pending success = DdeInitialize(pid_inst=0, pfn_callback=0, af_cmd=0, ul_res=0) end it "snake_case api registers an application with the Dynamic Data Exchange Management Library " do pending success = dde_initialize(pid_inst=0, pfn_callback=0, af_cmd=0, ul_res=0) end end # describe dde_initialize