How to Run a Code Resource from a Visual C++ Application
ID: Q136997
|
The information in this article applies to:
-
Microsoft Visual C++, Macintosh Cross-Development Addon, version 4.0
SUMMARY
This article illustrates loading and executing stand-alone Code
Resources from a Visual C++ application using the sample code shipped
with the Visual C++ Macintosh add-on.
Chapter 8 of the 68K Programmer's Guide in the Visual C++ Books Online
discusses using stand-alone code and shared libraries in 68K programs.
This chapter provides a brief set of instructions on how to call a code
resource. For more information on Macintosh Code Resources, please
refer to this chapter in the Books Online.
MORE INFORMATION
To load a Code Resource, the Macintosh System provides a function
(GetResource) that will load any resources including code resources and
return a handle to a code resource. Visual C++ provides a function
(_PvApplyFixup) that will take a handle to a code resource and return a
pointer to the entry point. You can use these two functions to run a code
resource from a Visual C++ application. The following example demonstrates
how to load and execute the SACODE sample's INIT code resource.
Step-by-Step Example
- Build the SACODE sample project located in Msvc20\Samples\M68k\Sacode
and copy the resulting file to the Macintosh. Give the remote executable
path and file name. For example:
Macintosh HD:Testing:SACODE
- Make a copy of the SKEL sample located in Msvc20\Samples\M68k\Skel and
call it MYSKEL. Then, make the following modifications:
- Add an include for Resource.h in Skel.c. For example, after this
line:
#include <macos\QuickDra.h>
add this line:
#include <macos\Resource.h>
- Add a prototype for _PvApplyFixup and modify the DoAbout function to
look like this:
extern ProcPtr _PvApplyFixup(Handle);
DoAbout ()
{
// SetParamText (aboutStr);
// (void) Alert (aboutAlrt, nil);
// return 0;
Handle hResource;
ProcPtr pCode;
hResource = GetResource('INIT',1); // load the resource
if (hResource != NULL) // make sure it's loaded
{
HLock(hResource); // lock down the handle
pCode = _PvApplyFixup(hResource); // get pointer to function
pCode(); // call the code resource
HUnlock(hResource);
}
return 0;
}
- Build the MYSKEL sample project, and copy the executable to the
Macintosh. Give the remote executable path and file name. For example:
Macintosh HD:Testing:MYSKEL
- Use a Macintosh resource editor application such as ResEdit to copy
the INIT resource in the SACODE file to the MYSKEL executable.
- Execute the MYSKEL program, and click About on the Help menu. The
code resource will be executed, resulting in a series of five beeps.
Additional query words:
kbinf 2.00
Keywords :
Version :
Platform :
Issue type :