Export (0) Print
Expand All
COM
id
in
int
odl
out
ptr
ref
Expand Minimize
1 out of 1 rated this helpful - Rate this topic

defaultvalue attribute

The [defaultvalue] attribute allows you to specify a default value for a typed optional parameter.


interface interface-name
{
  return-type function-name(
        mandatory-param-list, 
        [[attribute-list,] defaultvalue(value)] param-type param-name
        [ , optional-param-list]);
}

Parameters

interface-name

Specifies the name of the interface.

return-type

Specifies the return type of the function.

function-name

Specifies the name of the function to which the [defaultvalue] attribute will be applied.

mandatory-param-list

Specifies on or more required parameters.

attribute-list

Specifies a list of one or more attributes, separated by commas, that apply to the parameter.

param-type

Indicates the type of the optional parameter.

param-name

Specifies the name of the optional parameter.

optional-param-list

Specifies zero or more additional parameters, each of which must have a default value.

Remarks

The default value you specify for the parameter can be any constant, or an expression that resolves to a constant, that can be represented by a VARIANT. Specifically, you cannot apply the [defaultvalue] attribute to a parameter that is a structure, an array, or a SAFEARRAY.type.

The MIDL compiler accepts the following parameter ordering (from left-to-right):

  1. Required parameters (parameters that do not have the [defaultvalue] or [optional] attributes),
  2. optional parameters with or without the [defaultvalue] attribute,
  3. parameters with the [optional] attribute and without the [defaultvalue] attribute,
  4. [lcid] parameter, if any,
  5. [retval] parameter

Examples

interface IFace : IUnknown
{
    HRESULT Ex1([defaultvalue(44)] LONG i);
    HRESULT Ex2([defaultvalue(44)] SHORT i);
    HRESULT Ex3([defaultvalue("Hello")] BSTR i);
...
};

interface QueryDef : IUnknown
{
    HRESULT OpenRecordset( [in, defaultvalue(DBOPENTABLE)]
    LONG Type,
    [out,retval] Recordset **pprst);
}
//  Type is now known to be a LONG type (good for browser in VBA and
//  good for a C/C++ programmer) and has a default value of
//  DBOPENTABLE

See also

dispinterface
Generating a Type Library With MIDL
interface
lcid
optional
ODL File Example
ODL File Syntax
retval
TYPEFLAGS

 

 

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.