Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
1377 lines
49 KiB
Plaintext
1377 lines
49 KiB
Plaintext
<html>
|
|
|
|
<head>
|
|
<meta http-equiv="Content-Type"
|
|
content="text/html; charset=iso-8859-1">
|
|
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
|
|
<title>ATL Object Wizard</title>
|
|
</head>
|
|
|
|
<body bgcolor="#FFFFFF">
|
|
|
|
<p><font size="2">All wizard directives are enclosed in
|
|
[!…].</font></p>
|
|
|
|
<p><font size="2"><b>SYMBOLS</b> are denoted in uppercase.</font></p>
|
|
|
|
<p><font size="2">The wizard is case sensitive.</font></p>
|
|
|
|
<p><font size="2">The arguments to the wizard directives should
|
|
be between ( ).</font></p>
|
|
|
|
<p><font size="4"><b><u>Wizard Directives.</u></b></font></p>
|
|
|
|
<p><font size="2"><b>SYMBOL</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Replaces the symbol with the value of the
|
|
symbol.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>if(SYMBOL)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Wizard ignores whatever is after this
|
|
statement till it finds an <b>else</b> or <b>endif</b>
|
|
directive if it does not find the symbol in its map. It does
|
|
not care for the value of the symbol.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>if!(SYMBOL)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Wizard ignores whatever is after this
|
|
statement till it finds an <b>else</b> or <b>endif</b>
|
|
directive if it finds the symbol in its map. It does not care
|
|
for the value of the symbol.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>if=(SYMBOL, "</b><b><i>value"</i></b><b>)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Wizard performs the directives after this
|
|
statement till it finds an <b>else</b> or <b>endif</b>
|
|
directive only if the value of the symbol matches the string.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>if!=(SYMBOL, "</b><b><i>value"</i></b><b>)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Wizard performs the directives after this
|
|
statement till it finds an <b>else</b> or <b>endif</b>
|
|
directive only if the value of the symbol does not match the
|
|
string.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>endif</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Indicates the end of the if directives.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>else</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Used with if directives to associate
|
|
directives when the condition fails.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>crlf</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Inserts a new line in the output file.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>outputoff</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Turns off the output of the processed file.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>outputon</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Turns on the output of the processed file.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>set(SYMBOL, "</b><b><i>value"</i></b><b>)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Sets the value of the symbol in the map of
|
|
symbols. If the symbol is not in the map then it is added to
|
|
the map.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>RemoveSymbol (SYMBOL)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Removes the symbol from the internal map.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>include(FILENAME)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Parses the contents of the specified file
|
|
and add the parsed contents to the outputfile. It should be
|
|
included after a target directive.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>target() or target(FILENAME)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Specifies that further output should be
|
|
sent to the specified file if one is suggested. Use the
|
|
include directive to add contents of a template file in to
|
|
the output file after processing it.</font></p>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<p><font size="2">When specified without a filename it closes
|
|
the current outputfile.</font></p>
|
|
<p><font size="2">Before processing the file this Sets a
|
|
symbol FileExists to "TRUE" or "FALSE"
|
|
depending on whether the target file already exists.</font></p>
|
|
<p><font size="2">Example :</font></p>
|
|
<p><font size="2">target(CPPFILE)</font></p>
|
|
<p><font size="2">include(CPPTEMPLATE)</font></p>
|
|
<p><font size="2">target()</font></p>
|
|
<p><font size="2">The above directives assume that CPPFILE
|
|
and CPPTEMPLATE symbols point to valid filenames. The first
|
|
directive target(CPPFILE) specifies that further output
|
|
should be sent to the specified file. The
|
|
include(CPPTEMPLATE) directive specifies that the template
|
|
file specified by CPPTEMPLATE should be processed by the
|
|
wizard and the processed contents sent to the current output
|
|
file. The last directive target() specifies that the current
|
|
output file should be closed. At this point there is not
|
|
current output file.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>newguid(SYMBOL)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Directive creates a new guid and puts its
|
|
value into the specified SYMBOL</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>CopyFile(EXISTINGFILENAME, NEWFILENAME)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Copies existing file to a new file</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>DeleteFile(FILENAME)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Deletes the file</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>GetTemporaryFileName(SYMBOL)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Uses system calls to create a temporary
|
|
filename and sets the symbol to the value.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>DoubleSlash(SYMBOL)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds a \ after an existing \ to the value
|
|
of the symbol. This will be useful when adding headers files
|
|
with a path in them.</font></p>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Example</font></p>
|
|
<p><font size="2">INCLUDEFILESTRING has value of
|
|
"..\include\headerfile.h"</font></p>
|
|
<p><font size="2">After the following directive is executed </font></p>
|
|
<p><font size="2">DoubleSlash(INCLUDEFILESTRING)</font></p>
|
|
<p><font size="2">INCLUDEFILESTRING will be
|
|
"..\\include\\headerfile.h"</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddInterfaceToIDL(IDLFILENAME, FILENAME)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Processes the contents of the specified
|
|
file and adds it to the IDL file assuming that the contents
|
|
in the specified file is information about an Interface.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddCoClassToIDL(IDLFILENAME, FILENAME)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Processes the contents of the specified
|
|
file and adds it to the IDL file assuming that the contents
|
|
in the specified file is information about a CoClass.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddToObjectMap(COCLASSNAME, CLASSNAME)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds a directive to the ObjectMap of
|
|
project associating the CoClass with the class.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddIncludeFile(FILENAME, INCLUDEDIRECTIVE)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds the #include preprocessor directive to
|
|
the specified file. INCLUDEDIRECTIVE specifies what follows
|
|
#include. The is added after any existing #include directives
|
|
in the file.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddImportFile(IDLFILENAME, "</b><b><i>value"</i></b><b>)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds the import statement line to the
|
|
specified IDL file. Value specifies what to import. This is
|
|
added after any existing import statements in the IDL file</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddSymbolToString(NEWSYMBOL, "</b><b><i>value"</i></b><b>,
|
|
SYMBOL)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Appends the string specified by the symbol
|
|
to the value and associates the resulting value with the
|
|
newsymbol.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddStringToSymbol(NEWSYMBOL, SYMBOL, "</b><b><i>value"</i></b><b>)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Appends the value of the symbol specified
|
|
by the second argument to the contents of the string value
|
|
and associates the resulting value with the symbol specified
|
|
as the first argument.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddSymbolToSymbol(SYMBOL1, SYMBOL2)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Appends the value of SYMBOL2 to the value
|
|
of SYMBOL1 and associates the resulting string with SYMBOL1</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>Dialog("</b><b><i>dialog1_progid"</i></b><b>[,"</b><b><i>dialog2_progid"</i></b><b>[,…])</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Directive allows the user to invoke the
|
|
property pages to allow the user to specify the settings for
|
|
the object being inserted. Specify the ProgID of the
|
|
registered property pages. Please refer to the section on
|
|
property pages for information about registering property
|
|
pages and communicating with the wizard from the property
|
|
page.</font></p>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<p><font size="2">You can specify a maximum of 9 pages.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddFileToProject(FILENAME)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds the file to the project with the
|
|
default build settings.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>strcpy(SYMBOL1, SYMBOL2)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Copies the value of symbol2 to the symbol1</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>toupper(SYMBOL)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">converts the value of the symbol to upper
|
|
case</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>tolower(SYMBOL)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Converts the value of symbol to lower case</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddRegistryToRC(RGSFILENAME, ID_RGS)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds the specified RGS file into the
|
|
resources as type REGISTRY with the specified ID.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddStringResource(ID_OF_STRING, SYMBOL)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds a string resource with the specified
|
|
ID to the RC file. The values of the string will be the value
|
|
of the symbol.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddResourceFromFile(FILE, ID_RESOURCE,
|
|
RESOURCETYPE)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds the contents of the specified file to
|
|
the RC file under the correct resource type with the
|
|
specified ID</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>Debug ()</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">If this directive is added to the .CTL file
|
|
the wizard displays the directive that failed in case of a
|
|
failure.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>Error ("error message")</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Use this directive to terminate the wizard.
|
|
It displays the error message before terminating.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddToMap(CLASSNAME, "map",
|
|
"map entry", "#of parameters" [,
|
|
"parameter1" [,...]])</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds an entry to the specified map in the
|
|
given class.</font></p>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<p><font size="2"><b>CLASSNAME</b> – specifies the class
|
|
that contains the map</font></p>
|
|
<p><font size="2"><b>map name </b>– name of the map to
|
|
add the entry to.</font></p>
|
|
<p><font size="2"><b>map entry</b> – the type of entry</font></p>
|
|
<p><font size="2"><b>#of parameters</b> – number of
|
|
parameters in the entry.</font></p>
|
|
<p><font size="2"><b>parameter1, ...</b> – parameters to
|
|
the entry. Max of 5 parameters.</font></p>
|
|
<p><font size="2"><strong><u>Example.</u></strong></font></p>
|
|
<p><font size="2">AddToMap(CONTROLCLASS, "COM",
|
|
" COM_INTERFACE_ENTRY", "1",
|
|
"ISomeInterface")</font></p>
|
|
<p><font size="2">This will add the following line to the COM
|
|
map in the class specified by CONTROLCLASS.</font></p>
|
|
<p><font size="2">COM_INTERFACE_ENTRY(ISomeInterface)</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddClassInclude([CLASSNAME |
|
|
"classname"], [INCLUDENAME | "includename"],
|
|
"[h | cpp]")</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Add the include directive to the header or
|
|
the implementation file associated with a specified class.</font></p>
|
|
<p><font size="2"><b>CLASSNAME or classname </b>– the
|
|
class used to determine the file to put the directive in.
|
|
This can be a symbol or a value.</font></p>
|
|
<p><font size="2"><b>INCLUDENAME or includename</b> –
|
|
specified what to include</font></p>
|
|
<p><font size="2"><b>h or cpp</b> – specifies where to
|
|
put the directive. h specifies the header file for the class.
|
|
cpp specifies implementation file for the class.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddMemberFunction([CLASSNAME |
|
|
"classname"], "function name", "return
|
|
type", "parameters", "access",
|
|
TEMPLATEFILE, "classwizfunc")</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds the specified member function to the
|
|
class.</font></p>
|
|
<p><font size="2"><b>CLASSNAME or classname</b> – the
|
|
class the function has to be added to.</font></p>
|
|
<p><font size="2"><b>function name</b> – name of the
|
|
function to add</font></p>
|
|
<p><font size="2"><b>return type</b> – return type of
|
|
the function</font></p>
|
|
<p><font size="2"><b>parameters</b> – parameters to the
|
|
function</font></p>
|
|
<p><font size="2"><b>access</b> – can be one of the
|
|
following.</font></p>
|
|
<p><font size="2">ACCESS_PUBLIC – adds the function as a
|
|
public member function.</font></p>
|
|
<p><font size="2">ACCESS_PROTECTED – adds the function
|
|
as a protected member function.</font></p>
|
|
<p><font size="2">ACCESS_PRIVATE – adds the function as
|
|
a private member function.</font></p>
|
|
<p><font size="2"><b>TEMPLATEFILE</b> – specifies the
|
|
template file that contains the body of the function.</font></p>
|
|
<p><font size="2"><b>classwizfunc</b> – indicates if the
|
|
function declaration should be between classwizard comments. </font></p>
|
|
<blockquote>
|
|
<p><font size="2">If this is "0" then it is not
|
|
a function that should be added between classwizard
|
|
comments.<br>
|
|
If it is "1" the it is added between the
|
|
classwizard comments that pertain to virtual <b>functions.<br>
|
|
</b>Any other value add it between the comments
|
|
associated with class wizard message handler comments.</font></p>
|
|
</blockquote>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddMemberVariable([CLASSNAME |
|
|
"classname"], "variable name", "variable
|
|
type", "access", "unique variable"[,
|
|
UNIQUEVARSYMBOL])</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds the specified member variable to the
|
|
class.</font></p>
|
|
<p><font size="2"><b>CLASSNAME</b> or classname – the
|
|
class the variable has to be added to.</font></p>
|
|
<p><font size="2"><b>variable name</b> – name of the
|
|
variable to add</font></p>
|
|
<p><font size="2"><b>variable type</b> –type of variable</font></p>
|
|
<p><font size="2"><b>access</b> – can be one of the
|
|
following.</font></p>
|
|
<blockquote>
|
|
<p><font size="2">ACCESS_PUBLIC – adds the function
|
|
as a public member variable.</font></p>
|
|
<p><font size="2">ACCESS_PROTECTED – adds the
|
|
function as a protected member variable</font></p>
|
|
<p><font size="2">ACCESS_PRIVATE – adds the function
|
|
as a private member variable.</font></p>
|
|
</blockquote>
|
|
<p><font size="2"><b>unique variable</b> – indicates
|
|
whether the variable has to be an unique symbol.</font></p>
|
|
<blockquote>
|
|
<p><font size="2">"1" indicates that the symbol
|
|
has to be unique. requires the next parameter.</font></p>
|
|
<p><font size="2">other values indicate that if a
|
|
variable is already present then do nothing. Does not
|
|
require the next parameter.</font></p>
|
|
</blockquote>
|
|
<p><font size="2"><b>UNIQUEVARSYMBOL</b> – If a unique
|
|
symbol first checks to see if the variable is already a
|
|
member of the class. If not it add the variable and sets this
|
|
symbol to value passed in. If the variable already exists
|
|
then the wizard adds numbers after the given variable name
|
|
till it finds a value that is unique and adds the variable to
|
|
the class. On return this symbol will contain the value that
|
|
was created and inserted into the class.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddToMemberFunction([CLASSNAME |
|
|
"classname"], function, TEMPLATEFILE, SYMBOL,
|
|
SEARCHTYPE[, "search criteria"])</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds code to a function depending onto
|
|
search. When a string search fails the code is added to the
|
|
end of the function.</font></p>
|
|
<p><font size="2"><b>CLASSNAME or classname</b> – the
|
|
class the function is a member of. Use NULL for global
|
|
functions.</font></p>
|
|
<p><font size="2"><b>function</b> – function to add code
|
|
to.</font></p>
|
|
<p><font size="2"><b>TEMPLATEFILE</b> – template file
|
|
that contains the code to be inserted.</font></p>
|
|
<p><font size="2"><b>SYMBOL</b> – this symbol is set to
|
|
1 before the template file is processed and then removed
|
|
after the processing is over. This allows a template file to
|
|
contain code for different purposes all of them wrapped in
|
|
different conditionals.</font></p>
|
|
<p><font size="2"><b>SEARCHTYPE</b> – can be one of the
|
|
following.</font></p>
|
|
<blockquote>
|
|
<p><font size="2">BEGIN – beginning of the function.
|
|
Does not require the next parameter.</font></p>
|
|
<p><font size="2">END – end of the function. Does
|
|
not require the next parameter.</font></p>
|
|
<p><font size="2">LINEOFFSET – a line offset from
|
|
the beginning of the function. Next parameter is a number
|
|
that gives the offset.</font></p>
|
|
</blockquote>
|
|
<p><font size="2"><b>AFTERSEARCH</b> – Inserts on the
|
|
line after the line that contains the search string. Next
|
|
parameter is the string to search for. Search begins at the
|
|
beginning of the function and the first match is used. If
|
|
search fails the string is added to the end of the function.</font></p>
|
|
<p><font size="2"><b>BEFORESEARCH</b> – Inserts on the
|
|
line before the line that contains the search string. Search
|
|
begins at the beginning of the function and the first match
|
|
is used. If search fails the string is added to the end of
|
|
the function.</font></p>
|
|
<p><font size="2"><b>search criteria</b> – depends on
|
|
the previous parameter.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>AddBaseClass(CLASSNAME, BASECLASS,
|
|
"access")</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds a class as a base class to the
|
|
specified class.</font></p>
|
|
<p><font size="2"><b>CLASSNAME</b> – the class to which
|
|
the baseclass is to be added</font></p>
|
|
<p><font size="2"><b>BASECLASS</b> – the class to be
|
|
added as the base class</font></p>
|
|
<p><font size="2"><b>access</b> – This is ignored. The
|
|
class is added as public.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>ExistsMemberFunction([CLASSNAME |
|
|
"classname"], "function prototype", SYMBOL)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Checks if a function is a member of the
|
|
specified class.</font></p>
|
|
<p><font size="2"><b>CLASSNAME or classname</b> – The
|
|
class that should contain the member function. Use NULL for
|
|
global functions.</font></p>
|
|
<p><font size="2"><b>function prototype</b> – prototype
|
|
of the function to check</font></p>
|
|
<p><font size="2"><b>SYMBOL</b> – this symbol is set to
|
|
"1" if the function is a member otherwise it is set
|
|
to "0".</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><strong>ExistsInMemberFunction([CLASSNAME |
|
|
"classname"], "function prototype",
|
|
"search string", SYMBOL)</strong></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Checks if a function contains the specified
|
|
string.</font></p>
|
|
<p><font size="2"><b>CLASSNAME or classname </b>– the
|
|
class the function is a member of. Use NULL for global
|
|
functions.</font></p>
|
|
<p><font size="2"><b>function prototype</b> – prototype
|
|
of the function to search in.</font></p>
|
|
<p><font size="2"><b>search string</b> – string to
|
|
search for</font></p>
|
|
<p><font size="2"><b>SYMBOL</b> – this symbol is set to
|
|
"1" if the search succeeds otherwise it is set to
|
|
"0".</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>IDLSettingsForATL()</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Modifies the settings for an IDL/ODL
|
|
already in the project to match the settings required for
|
|
using ATL in the project.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>OpenDialog(DIALOGID)</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Opens a dialog in the dialog editor after
|
|
the wizard exists.</font></p>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<p><font size="2"><b>DIALOGID</b> – the id of the dialog
|
|
to open.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>Commit()</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Commits changes made by the wizard till
|
|
that point. Changes made before this directive will not
|
|
undone if the wizard fails after this directive. This
|
|
directive commits all the changes before it so the changes
|
|
can be accessed in the wizard. This is used by the Dialog
|
|
wizard to open the dialog resource. Any change made by the
|
|
wizard will not be accessible in the wizard till they are
|
|
committed by this directive.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="4"><b><u>PropertyPages</u></b></font></p>
|
|
|
|
<p><font size="2">Property pages can be created to allow
|
|
customization of the object being inserted. The wizard creates a
|
|
property sheet using the OleCreatePropertyFrame API. The property
|
|
pages that are displayed using this property sheet should support
|
|
the IPropertyPage interface.</font></p>
|
|
|
|
<p><font size="2">Property pages can communicate with the wizard
|
|
using the ISymbolMap interface implemented by the wizard. </font></p>
|
|
|
|
<p><font size="3"><b>ISymbolMap</b></font></p>
|
|
|
|
<p><font size="2">In addition to the IUnknown methods it
|
|
implements the following.</font></p>
|
|
|
|
<p><font size="2"><b>HRESULT Set(/* [in] */ LPCOLESTR strSymbol,
|
|
/* [in] */ LPCOLESTR strValue);</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Adds the symbol string pair to the internal
|
|
map of the wizard</font></p>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Returns S_OK</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>HRESULT Get(/* [in] */ LPCOLESTR strSymbol,
|
|
/* [retval][out] */ BSTR *pstrValue);</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Retrieves the value associated with the
|
|
specified symbol. If the call is successful pstrValue will
|
|
point to a BSTR which is allocated using SysAllocString. The
|
|
caller should free this string using SysFreeString</font></p>
|
|
<p><font size="2">Returns S_OK if it finds the symbol. E_FAIL
|
|
if the symbol is not found.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>HRESULT STDMETHODCALLTYPE Clear(void) ;</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Clears all the internal map of the wizard
|
|
of all symbols.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2"><b>HRESULT SetStatus(const CLSID *pclsid, BOOL
|
|
bEnableOK);</b></font></p>
|
|
|
|
<blockquote>
|
|
<p><font size="2">Allows each individual property pages to
|
|
specify if the OK button can be enabled to allow the user to
|
|
complete their selections. This is useful when the OK button
|
|
has to be disabled till the user has entered some required
|
|
values.</font></p>
|
|
<p><font size="2"><strong>pcslid</strong> points to the CLSID
|
|
of the property page that is calling this method. </font></p>
|
|
<p><font size="2"><strong>bEnableOK</strong> specifies
|
|
whether the OK button should be enable or disabled. TRUE
|
|
specifies enable.</font></p>
|
|
</blockquote>
|
|
|
|
<p><font size="2">ISymbolMap can be obtained by Querying the
|
|
IUnknown passed through SetObjects method of IPropertyPage.</font></p>
|
|
|
|
<p><font size="4"><b><u>Existing Property Pages</u></b></font></p>
|
|
|
|
<p><font size="2">Following are some of the existing property
|
|
pages.</font></p>
|
|
|
|
<p><font size="2"><b><u>Names Property Page</u></b></font></p>
|
|
|
|
<p><font size="2">Sets the following symbols. ProgID is
|
|
"Names98". The symbol ComponentType controls
|
|
enabling/disabling controls. This is a string with each character
|
|
representing the field in the tab order. Each char should be
|
|
either 0 or 1.</font></p>
|
|
|
|
<p><font size="2"></font> </p>
|
|
|
|
<table border="1" cellpadding="9" width="100%"
|
|
bordercolor="#000000">
|
|
<tr>
|
|
<td valign="top" width="32%" bgcolor="#808080"><font
|
|
color="#FFFFFF" size="2"><b>Symbol</b></font></td>
|
|
<td valign="top" width="68%" bgcolor="#808080"><font
|
|
color="#FFFFFF" size="2"><b>Contents of field on the
|
|
Property Page that is used for value</b></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">ShortName </font></td>
|
|
<td valign="top" width="68%"><font size="2">Short Name</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">ClassName</font></td>
|
|
<td valign="top" width="68%"><font size="2">Class</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">HeaderName</font></td>
|
|
<td valign="top" width="68%"><font size="2">.H File</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">CPPName</font></td>
|
|
<td valign="top" width="68%"><font size="2">.CPP File</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">CoClassName</font></td>
|
|
<td valign="top" width="68%"><font size="2">CoClass</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">InterfaceName</font></td>
|
|
<td valign="top" width="68%"><font size="2">Interface</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">TypeName</font></td>
|
|
<td valign="top" width="68%"><font size="2">Type</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">ProgID</font></td>
|
|
<td valign="top" width="68%"><font size="2">ProgID with a
|
|
.1 appended</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">VersionIndependentProgID</font></td>
|
|
<td valign="top" width="68%"><font size="2">ProgId</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">ObjectGUID</font></td>
|
|
<td valign="top" width="68%"><font size="2">None. A new
|
|
GUID is generated and its value is used.</font></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><font size="2"><b><u>Miscellaneous Property Page</u></b></font></p>
|
|
|
|
<p><font size="2">Sets the following Symbols. ProgID is
|
|
"CtlDlg98"</font></p>
|
|
|
|
<table border="1" cellpadding="9" width="100%"
|
|
bordercolor="#000000">
|
|
<tr>
|
|
<td valign="top" width="32%" bgcolor="#808080"><font
|
|
color="#FFFFFF" size="2"><b>Symbol</b></font></td>
|
|
<td valign="top" width="68%" bgcolor="#808080"><font
|
|
color="#FFFFFF" size="2"><b>Contents of field on the
|
|
Property Page that is used for value</b></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">WindowedOnlyEnabled</font></td>
|
|
<td valign="top" width="68%"><font size="2">Windowed
|
|
(TRUE or FALSE)</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">InsertableEnabled</font></td>
|
|
<td valign="top" width="68%"><font size="2">Insertable
|
|
(TRUE or FALSE)</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">NormalizeDCEnabled</font></td>
|
|
<td valign="top" width="68%"><font size="2">Normalize DC
|
|
(TRUE or FALSE)</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">Opaque</font></td>
|
|
<td valign="top" width="68%"><font size="2">Opaque (TRUE
|
|
or FALSE)</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">SolidBackground</font></td>
|
|
<td valign="top" width="68%"><font size="2">SolidBackground
|
|
(TRUE or FALSE)</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">MiscStatus</font></td>
|
|
<td valign="top" width="68%"><font size="2">Misc setting
|
|
fields</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">SubclassWindow</font></td>
|
|
<td valign="top" width="68%"><font size="2">Subclass
|
|
Combobox selection</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">SubclassWindowSymbol</font></td>
|
|
<td valign="top" width="68%"><font size="2">Subclass
|
|
Combobox selection without those characters that cannot
|
|
be used in an identifier.</font></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><font size="2"><b><u>Attributes Property Page</u></b></font></p>
|
|
|
|
<p><font size="2">Sets the following Symbols. ProgID is
|
|
"ObjDlg98"</font></p>
|
|
|
|
<p><font size="2">The symbol Attributes controls
|
|
enabling/disabling controls. This is a string with each character
|
|
representing the field in the tab order. Each char should be
|
|
either 0 or 1.</font></p>
|
|
|
|
<table border="1" cellpadding="9" width="100%"
|
|
bordercolor="#000000">
|
|
<tr>
|
|
<td valign="top" width="32%" bgcolor="#808080"><font
|
|
color="#FFFFFF" size="2"><b>Symbol</b></font></td>
|
|
<td valign="top" width="68%" bgcolor="#808080"><font
|
|
color="#FFFFFF" size="2"><b>Contents of field on the
|
|
Property Page that is used for value</b></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">FreeThreadedMarshaler</font></td>
|
|
<td valign="top" width="68%"><font size="2">FreeThreadedMarshaler
|
|
(TRUE or FALSE)</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">ErrorInfoEnabled</font></td>
|
|
<td valign="top" width="68%"><font size="2">ErrorInfo
|
|
(TRUE or FALSE)</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">ConnectionPointsEnabled</font></td>
|
|
<td valign="top" width="68%"><font size="2">ConnectionPoints
|
|
(TRUE or FALSE)</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">Dual</font></td>
|
|
<td valign="top" width="68%"><font size="2">Dual (TRUE or
|
|
FALSE)</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">ThreadingModel</font></td>
|
|
<td valign="top" width="68%"><font size="2">ThreadingModel
|
|
(Single, Apartment, Both, Free)</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="32%"><font size="2">Aggregatable</font></td>
|
|
<td valign="top" width="68%"><font size="2">Aggregatable
|
|
(YES, NO, ONLY)</font></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><font size="4"><b><u>Registry entries.</u></b></font></p>
|
|
|
|
<p><font size="2">The following keys are added to the registry
|
|
under the </font></p>
|
|
|
|
<p><font size="2">HKCU\Software\Microsoft\ATLWizard</font></p>
|
|
|
|
<p><font size="2">{GUID} </font></p>
|
|
|
|
<p><font size="2">Category – REG_SZ
|
|
"<Category>"</font></p>
|
|
|
|
<p><font size="2">Control – REG_SZ "<File
|
|
name>"</font></p>
|
|
|
|
<p><font size="2">Icon – REG_SZ "File Name>"</font></p>
|
|
|
|
<p><font size="2">Name – REG_SZ "<Name>"</font></p>
|
|
|
|
<p><font size="2">{GUID} – a GUID for your component. This
|
|
is not associated with anything else. A GUID is used to get a
|
|
unique name</font></p>
|
|
|
|
<p><font size="2">Category – specifies the category under
|
|
which the component should appear. </font></p>
|
|
|
|
<p><font size="2">Control – name of the control file that
|
|
has directives for the component. It is normally a .CTL file.</font></p>
|
|
|
|
<p><font size="2">Icon – Name of the file that contains the
|
|
Icon for the component.</font></p>
|
|
|
|
<p><font size="2">Name – Name of the component.</font></p>
|
|
|
|
<p><font size="2">Register the property page. The wizard loads
|
|
the property page using its ProgID specified in the directive
|
|
file.</font></p>
|
|
|
|
<p><b><u>Symbols set by the Wizard before invoking the control
|
|
file.</u></b></p>
|
|
|
|
<table border="1" cellpadding="9" width="100%"
|
|
bordercolor="#000000">
|
|
<tr>
|
|
<td valign="top" width="29%" bgcolor="#808080"><font
|
|
color="#FFFFFF" size="2"><b>Symbol</b></font></td>
|
|
<td valign="top" width="71%" bgcolor="#808080"><font
|
|
color="#FFFFFF" size="2"><b>Value</b></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">LibName</font></td>
|
|
<td valign="top" width="71%"><font size="2">Name of the
|
|
typelib in the .IDL file for the project</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">LibGUID</font></td>
|
|
<td valign="top" width="71%"><font size="2">GUID of the
|
|
typelib</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">GalleryPath</font></td>
|
|
<td valign="top" width="71%"><font size="2">Points to the
|
|
directory that contains the template files</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">ProjectName</font></td>
|
|
<td valign="top" width="71%"><font size="2">Name of the
|
|
project</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">ProjectNameCPP</font></td>
|
|
<td valign="top" width="71%"><font size="2">Name of the
|
|
project cpp file. (projectname.cpp)</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">ProjectType</font></td>
|
|
<td valign="top" width="71%"><font size="2">type of
|
|
project. EXE or DLL</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">ProjectAppID</font></td>
|
|
<td valign="top" width="71%"><font size="2">the AppID of
|
|
the local server it the project is of type EXE. Otherwise
|
|
not set</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">ProjectNameRC</font></td>
|
|
<td valign="top" width="71%"><font size="2">Name of the
|
|
RC file for the project. (Projectname.rc)</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">ProjectNameHeader</font></td>
|
|
<td valign="top" width="71%"><font size="2">Name of the
|
|
project header. (Projectname.h)</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">VCINCDIR</font></td>
|
|
<td valign="top" width="71%"><font size="2">Points to vc
|
|
include directory</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">NULLSTR</font></td>
|
|
<td valign="top" width="71%"><font size="2">set to
|
|
""</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">VC</font></td>
|
|
<td valign="top" width="71%"><font size="2">Set to 6.0 in
|
|
VC 6.0</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">STDAFXH</font></td>
|
|
<td valign="top" width="71%"><font size="2">Set to
|
|
stdafx.h</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">stdafx.h</font></td>
|
|
<td valign="top" width="71%"><font size="2">Set stdafx.h</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">STDAFXCPP</font></td>
|
|
<td valign="top" width="71%"><font size="2">Set to
|
|
stdafx.cpp</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">stdafx.cpp</font></td>
|
|
<td valign="top" width="71%"><font size="2">Set to
|
|
stdafx.cpp</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">ObjectMap</font></td>
|
|
<td valign="top" width="71%"><font size="2">Set to 1 if
|
|
object map is found. otherwise symbol is not available</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">ProjectDirectory</font></td>
|
|
<td valign="top" width="71%"><font size="2">Projects
|
|
directory</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">IDLProject</font></td>
|
|
<td valign="top" width="71%"><font size="2">Name of the
|
|
IDL/ODL file for the project. Set to "" if the
|
|
project does not have an IDL/ODL</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">ProjectHadIDL</font></td>
|
|
<td valign="top" width="71%"><font size="2">Set to TRUE
|
|
if the project has IDL/ODL file. Otherwise the symbol is
|
|
not available.</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">CWinApp</font></td>
|
|
<td valign="top" width="71%"><font size="2">If the
|
|
project is MFC then this SYMBOL contains the name of the
|
|
CWinApp derived class otherwise set to ""</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">MFC</font></td>
|
|
<td valign="top" width="71%"><font size="2">Set to
|
|
"1" for MFC projects. Otherwise not available</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">MFCCTL</font></td>
|
|
<td valign="top" width="71%"><font size="2">Set to
|
|
"1" if the project is a MFC control project.
|
|
otherwise set to "0"</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">MFCOLE</font></td>
|
|
<td valign="top" width="71%"><font size="2">Set to
|
|
"1" if MFC project is MFC control project.
|
|
Otherwise not available.</font></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" width="29%"><font size="2">ProjectNameSafe</font></td>
|
|
<td valign="top" width="71%"><font size="2">If the
|
|
project name contains characters that cannot be used as
|
|
an identifier the this symbol contain the project name
|
|
after removing such characters.</font></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><font size="2"></font> </p>
|
|
|
|
<p><font size="4"><b>Sample Registry files.</b></font></p>
|
|
|
|
<pre><b>.RGS file for the wizard.</b></pre>
|
|
|
|
<pre><font size="3">HKCR
|
|
{
|
|
ATLOBJ.ATLWiz = s 'ATL Object Wizard'
|
|
{
|
|
CurVer = s 'ATLOBJ.ATLWiz.1'
|
|
CLSID = s '{2EF12E30-3C3B-11d1-AFA9-00C04FB99436}'
|
|
}
|
|
ATLOBJ.ATLWiz.1 = s 'ATL Object Wizard'
|
|
{
|
|
CLSID = s '{2EF12E30-3C3B-11d1-AFA9-00C04FB99436}'
|
|
}
|
|
NoRemove CLSID
|
|
{
|
|
ForceRemove {2EF12E30-3C3B-11d1-AFA9-00C04FB99436} = s 'ATL Object Wizard'
|
|
{
|
|
ProgID = s 'ATLOBJ.ATLWiz.1'
|
|
VersionIndependentProgID = s 'ATLOBJ.ATLWiz'
|
|
InprocServer32 = s '%Module%'
|
|
}
|
|
}
|
|
}
|
|
HKLM
|
|
{
|
|
Software
|
|
{
|
|
Microsoft
|
|
{
|
|
DevStudio
|
|
{
|
|
6.0
|
|
{
|
|
ATLWizard
|
|
{
|
|
'{6E871954-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Objects'
|
|
val 'Control' = s 'object.ctl'
|
|
val 'Icon' = s 'object.ico'
|
|
val 'Name' = s 'Simple Object'
|
|
}
|
|
'{6E871955-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Objects'
|
|
val 'Name' = s 'Add-in Object'
|
|
val 'Control' = s 'addin.ctl'
|
|
val 'Icon' = s 'addin.ico'
|
|
}
|
|
'{6E871956-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Objects'
|
|
val 'Name' = s 'Internet Explorer Object'
|
|
val 'Control' = s 'ieuiless.ctl'
|
|
val 'Icon' = s 'iexplore.ico'
|
|
}
|
|
'{6E871957-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Objects'
|
|
val 'Name' = s 'ActiveX Server Component'
|
|
val 'Control' = s 'asp.ctl'
|
|
val 'Icon' = s 'asp.ico'
|
|
}
|
|
'{6E871960-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Objects'
|
|
val 'Name' = s 'MS Transaction Server Component'
|
|
val 'Control' = s 'msdtx.ctl'
|
|
val 'Icon' = s 'msdtx.ico'
|
|
}
|
|
'{6E871961-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Objects'
|
|
val 'Name' = s 'Component Registrar Object'
|
|
val 'Control' = s 'compreg.ctl'
|
|
val 'Icon' = s 'compreg.ico'
|
|
}
|
|
'{6E871958-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Controls'
|
|
val 'Name' = s 'Full Control'
|
|
val 'Control' = s 'control.ctl'
|
|
val 'Icon' = s 'control.ico'
|
|
}
|
|
'{6E871959-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Controls'
|
|
val 'Name' = s 'Lite Control'
|
|
val 'Control' = s 'control.ctl'
|
|
val 'Icon' = s 'iexplore.ico'
|
|
val 'SetSymbol' = s 'IEControl'
|
|
}
|
|
'{6E87195D-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Controls'
|
|
val 'Name' = s 'Composite Control'
|
|
val 'Control' = s 'control.ctl'
|
|
val 'Icon' = s 'compsite.ico'
|
|
val 'SetSymbol' = s 'CompositeControl'
|
|
}
|
|
'{6E871962-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Controls'
|
|
val 'Name' = s 'HTML Control'
|
|
val 'Control' = s 'control.ctl'
|
|
val 'Icon' = s 'HTML.ico'
|
|
val 'SetSymbol' = s 'HTMLControl'
|
|
}
|
|
'{6E87195A-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Controls'
|
|
val 'Name' = s 'Property Page'
|
|
val 'Control' = s 'proppage.ctl'
|
|
val 'Icon' = s 'proppage.ico'
|
|
}
|
|
'{6E87195B-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Miscellaneous'
|
|
val 'Control' = s 'dialog.ctl'
|
|
val 'Icon' = s 'dialog.ico'
|
|
val 'Name' = s 'Dialog'
|
|
}
|
|
'{6E87195E-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Objects'
|
|
val 'Control' = s 'snapin.ctl'
|
|
val 'Icon' = s 'snapin.ico'
|
|
val 'Name' = s 'MMC SnapIn'
|
|
}
|
|
'{6E87195C-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Data Access'
|
|
val 'Name' = s 'Provider'
|
|
val 'Control' = s 'provider.ctl'
|
|
val 'Icon' = s 'provider.ico'
|
|
}
|
|
'{6E87195F-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Data Access'
|
|
val 'Name' = s 'Consumer'
|
|
val 'Control' = s 'consumer.ctl'
|
|
val 'Icon' = s 'consumer.ico'
|
|
}
|
|
'{6E871963-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Controls'
|
|
val 'Name' = s 'Lite Composite Control'
|
|
val 'Control' = s 'control.ctl'
|
|
val 'Icon' = s 'compsite.ico'
|
|
val 'SetSymbol' = s 'CompositeControl,IEControl'
|
|
}
|
|
'{6E871964-50AD-11D0-883E-080000185165}'
|
|
{
|
|
val 'Category' = s 'Controls'
|
|
val 'Name' = s 'Lite HTML Control'
|
|
val 'Control' = s 'control.ctl'
|
|
val 'Icon' = s 'HTML.ico'
|
|
val 'SetSymbol' = s 'HTMLControl,IEControl'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}</font></pre>
|
|
|
|
<p><font size="3">.RGS file for Names property page.</font></p>
|
|
|
|
<pre><font size="3">HKCR
|
|
{
|
|
Names98.Names98 = s 'Names98 Class'
|
|
{
|
|
CurVer = s 'Names98.Names98.1'
|
|
CLSID = s '{53FCBC28-5015-11d1-AFC7-00C04FB99436}'
|
|
}
|
|
Names98.Names98.1 = s 'Names98 Class'
|
|
{
|
|
CLSID = s '{53FCBC28-5015-11d1-AFC7-00C04FB99436}'
|
|
}
|
|
NoRemove CLSID
|
|
{
|
|
ForceRemove {53FCBC28-5015-11d1-AFC7-00C04FB99436} = s 'Names98 Class'
|
|
{
|
|
InprocServer32 = s '%MODULE%'
|
|
{
|
|
val ThreadingModel = s 'Apartment'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</font></pre>
|
|
|
|
<p><font size="3"><b><u>Smaple Property Page code</u></b></font></p>
|
|
|
|
<p><font size="2"><b>.H File</b></font></p>
|
|
|
|
<pre><font size="3">// testpg.h : Declaration of the Ctestpg
|
|
|
|
#ifndef __TESTPG_H_
|
|
#define __TESTPG_H_
|
|
|
|
#include "resource.h" // main symbols
|
|
|
|
EXTERN_C const CLSID CLSID_testpg;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Ctestpg
|
|
class ATL_NO_VTABLE Ctestpg :
|
|
public CComObjectRootEx<CComSingleThreadModel>,
|
|
public CComCoClass<Ctestpg, &CLSID_testpg>,
|
|
public IPropertyPageImpl<Ctestpg>,
|
|
public CDialogImpl<Ctestpg>
|
|
{
|
|
public:
|
|
Ctestpg()
|
|
{
|
|
m_dwTitleID = IDS_TITLEtestpg;
|
|
m_dwHelpFileID = IDS_HELPFILEtestpg;
|
|
m_dwDocStringID = IDS_DOCSTRINGtestpg;
|
|
}
|
|
|
|
enum {IDD = IDD_TESTPG};
|
|
|
|
DECLARE_REGISTRY_RESOURCEID(IDR_TESTPG)
|
|
|
|
BEGIN_COM_MAP(Ctestpg)
|
|
COM_INTERFACE_ENTRY_IMPL(IPropertyPage)
|
|
END_COM_MAP()
|
|
|
|
BEGIN_MSG_MAP(Ctestpg)
|
|
COMMAND_ID_HANDLER(IDC_SET, OnSet);
|
|
COMMAND_ID_HANDLER(IDC_GET, OnGet);
|
|
CHAIN_MSG_MAP(IPropertyPageImpl<Ctestpg>)
|
|
END_MSG_MAP()
|
|
|
|
LRESULT OnSet(short , short nID , HWND hWnd, BOOL& bHandled)
|
|
{
|
|
CComQIPtr<ISymbolMap, &IID_ISymbolMap> pMap(m_ppUnk[0]);
|
|
if (!pMap)
|
|
return S_OK;
|
|
|
|
TCHAR szSymbol[128];
|
|
TCHAR szValue[128];
|
|
GetDlgItemText(IDC_SYMBOL, szSymbol, 128);
|
|
GetDlgItemText(IDC_VALUE, szValue, 128);
|
|
pMap->Set(CComBSTR(szSymbol), CComBSTR(szValue));
|
|
return 0;
|
|
}
|
|
|
|
LRESULT OnGet(short , short nID , HWND hWnd, BOOL& bHandled)
|
|
{
|
|
CComQIPtr<ISymbolMap, &IID_ISymbolMap> pMap(m_ppUnk[0]);
|
|
if (!pMap)
|
|
return S_OK;
|
|
|
|
TCHAR szSymbol[128];
|
|
GetDlgItemText(IDC_SYMBOL, szSymbol, 128);
|
|
CComBSTR szValue;
|
|
pMap->Get(CComBSTR(szSymbol), &szValue);
|
|
USES_CONVERSION;
|
|
SetDlgItemText(IDC_VALUE, OLE2T(szValue));
|
|
|
|
return 0;
|
|
}
|
|
|
|
STDMETHOD(Apply)(void)
|
|
{
|
|
ATLTRACE(_T("Ctestpg::Apply\n"));
|
|
if (m_hWnd == NULL)
|
|
return S_OK;
|
|
CComQIPtr<ISymbolMap, &IID_ISymbolMap> pMap(m_ppUnk[0]);
|
|
if (!pMap)
|
|
return S_OK;
|
|
|
|
TCHAR szSymbol[128];
|
|
TCHAR szValue[128];
|
|
GetDlgItemText(IDC_SYMBOL, szSymbol, 128);
|
|
GetDlgItemText(IDC_VALUE, szValue, 128);
|
|
pMap->Set(CComBSTR(szSymbol), CComBSTR(szValue));
|
|
|
|
m_bDirty = FALSE;
|
|
return S_OK;
|
|
}
|
|
};
|
|
|
|
#endif //__TESTPG_H_
|
|
</font></pre>
|
|
|
|
<p><font size="2"><b>.rgs</b></font></p>
|
|
|
|
<pre><font size="3">HKCR
|
|
{
|
|
testpg.testpg.1 = s 'testpg Class'
|
|
{
|
|
CLSID = s '{6992CC0C-472B-11D1-AA8C-000000000000}'
|
|
}
|
|
testpg.testpg = s 'testpg Class'
|
|
{
|
|
CLSID = s '{6992CC0C-472B-11D1-AA8C-000000000000}'
|
|
CurVer = s 'testpg.testpg.1'
|
|
}
|
|
NoRemove CLSID
|
|
{
|
|
ForceRemove {6992CC0C-472B-11D1-AA8C-000000000000} = s 'testpg Class'
|
|
{
|
|
ForceRemove 'Programmable'
|
|
InprocServer32 = s '%MODULE%'
|
|
{
|
|
val ThreadingModel = s 'Apartment'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
</font></pre>
|
|
|
|
<p><font size="2"><b>Dialog resource for the page</b></font></p>
|
|
|
|
<pre><font size="3">IDD_TESTPG DIALOG DISCARDABLE 0, 0, 271, 105
|
|
STYLE WS_CHILD
|
|
FONT 8, "MS Sans Serif"
|
|
BEGIN
|
|
EDITTEXT IDC_SYMBOL,22,24,40,14,ES_AUTOHSCROLL
|
|
LTEXT "Symbol",IDC_STATIC,22,8,24,8
|
|
LTEXT "Value",IDC_STATIC,87,8,19,8
|
|
EDITTEXT IDC_VALUE,87,24,40,14,ES_AUTOHSCROLL
|
|
PUSHBUTTON "Set",IDC_SET,22,49,40,14
|
|
PUSHBUTTON "Get",IDC_GET,87,49,40,14
|
|
END</font></pre>
|
|
|
|
<p><font size="2"><b>String resources.</b></font></p>
|
|
|
|
<pre><font size="2">IDS_TITLEtestpg "Title"</font></pre>
|
|
|
|
<pre><font size="2">IDS_HELPFILEtestpg "Help File Name"</font></pre>
|
|
|
|
<pre><font size="2">IDS_DOCSTRINGtestpg "Your Help String"</font></pre>
|
|
|
|
<h1><font size="3"><strong><u>ISymbolMap</u></strong></font></h1>
|
|
|
|
<pre>[
|
|
object,
|
|
uuid(C6D58201-1FA3-11D0-BF1E-0000E8D0D146),
|
|
helpstring("ISymbolMap Interface"),
|
|
pointer_default(unique)
|
|
]
|
|
interface ISymbolMap : IUnknown
|
|
{
|
|
HRESULT Set([in] LPCOLESTR strSymbol, [in] LPCOLESTR strValue);
|
|
HRESULT Get([in] LPCOLESTR strSymbol, [out, retval] BSTR* pstrValue);
|
|
HRESULT Clear();
|
|
HRESULT SetStatus(const CLSID* pclsid, BOOL bEnableOK);
|
|
};</pre>
|
|
</body>
|
|
</html>
|