Retired Document
Important: This document is part of the Legacy section of the ADC Developer Library. This information should not be used for new development.
Current information on this Developer Library topic can be found here:
main.c
// |
// main.c |
// TestCarbonAppTiger |
// |
// Created by Ted Jucevic on 5/12/06. |
// Copyright __MyCompanyName__ 2006. All rights reserved. |
// |
#include <Carbon/Carbon.h> |
static OSStatus AppEventHandler( EventHandlerCallRef inCaller, EventRef inEvent, void* inRefcon ); |
static OSStatus HandleNew(); |
static OSStatus WindowEventHandler( EventHandlerCallRef inCaller, EventRef inEvent, void* inRefcon ); |
static IBNibRef sNibRef; |
//-------------------------------------------------------------------------------------------- |
int main(int argc, char* argv[]) |
{ |
OSStatus err; |
static const EventTypeSpec kAppEvents[] = |
{ |
{ kEventClassCommand, kEventCommandProcess } |
}; |
// Create a Nib reference, passing the name of the nib file (without the .nib extension). |
// CreateNibReference only searches into the application bundle. |
err = CreateNibReference( CFSTR("main"), &sNibRef ); |
require_noerr( err, CantGetNibRef ); |
// Once the nib reference is created, set the menu bar. "MainMenu" is the name of the menu bar |
// object. This name is set in InterfaceBuilder when the nib is created. |
err = SetMenuBarFromNib( sNibRef, CFSTR("MenuBar") ); |
require_noerr( err, CantSetMenuBar ); |
// Install our handler for common commands on the application target |
InstallApplicationEventHandler( NewEventHandlerUPP( AppEventHandler ), |
GetEventTypeCount( kAppEvents ), kAppEvents, |
0, NULL ); |
// Create a new window. A full-fledged application would do this from an AppleEvent handler |
// for kAEOpenApplication. |
HandleNew(); |
// Run the event loop |
RunApplicationEventLoop(); |
CantSetMenuBar: |
CantGetNibRef: |
return err; |
} |
//-------------------------------------------------------------------------------------------- |
static OSStatus |
AppEventHandler( EventHandlerCallRef inCaller, EventRef inEvent, void* inRefcon ) |
{ |
OSStatus result = eventNotHandledErr; |
switch ( GetEventClass( inEvent ) ) |
{ |
case kEventClassCommand: |
{ |
HICommandExtended cmd; |
verify_noerr( GetEventParameter( inEvent, kEventParamDirectObject, typeHICommand, NULL, sizeof( cmd ), NULL, &cmd ) ); |
switch ( GetEventKind( inEvent ) ) |
{ |
case kEventCommandProcess: |
switch ( cmd.commandID ) |
{ |
case kHICommandNew: |
result = HandleNew(); |
break; |
// Add your own command-handling cases here |
default: |
break; |
} |
break; |
} |
break; |
} |
default: |
break; |
} |
return result; |
} |
//-------------------------------------------------------------------------------------------- |
DEFINE_ONE_SHOT_HANDLER_GETTER( WindowEventHandler ) |
//-------------------------------------------------------------------------------------------- |
static OSStatus |
HandleNew() |
{ |
OSStatus err; |
WindowRef window; |
static const EventTypeSpec kWindowEvents[] = |
{ |
{ kEventClassCommand, kEventCommandProcess } |
}; |
// Create a window. "MainWindow" is the name of the window object. This name is set in |
// InterfaceBuilder when the nib is created. |
err = CreateWindowFromNib( sNibRef, CFSTR("MainWindow"), &window ); |
require_noerr( err, CantCreateWindow ); |
// Install a command handler on the window. We don't use this handler yet, but nearly all |
// Carbon apps will need to handle commands, so this saves everyone a little typing. |
InstallWindowEventHandler( window, GetWindowEventHandlerUPP(), |
GetEventTypeCount( kWindowEvents ), kWindowEvents, |
window, NULL ); |
// Position new windows in a staggered arrangement on the main screen |
RepositionWindow( window, NULL, kWindowCascadeOnMainScreen ); |
// The window was created hidden, so show it |
ShowWindow( window ); |
CantCreateWindow: |
return err; |
} |
//-------------------------------------------------------------------------------------------- |
static OSStatus |
WindowEventHandler( EventHandlerCallRef inCaller, EventRef inEvent, void* inRefcon ) |
{ |
OSStatus err = eventNotHandledErr; |
switch ( GetEventClass( inEvent ) ) |
{ |
case kEventClassCommand: |
{ |
HICommandExtended cmd; |
verify_noerr( GetEventParameter( inEvent, kEventParamDirectObject, typeHICommand, NULL, sizeof( cmd ), NULL, &cmd ) ); |
switch ( GetEventKind( inEvent ) ) |
{ |
case kEventCommandProcess: |
switch ( cmd.commandID ) |
{ |
// Add your own command-handling cases here |
default: |
break; |
} |
break; |
} |
break; |
} |
default: |
break; |
} |
return err; |
} |
Copyright © 2012 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2012-07-24