Carbon is a procedural C interface for Mac OS X. Whether you are writing a new application or porting one from another platform, Carbon is an excellent framework for developing on Mac OS X. If you're developing new applications and prefer an object-oriented interface, be sure to consider Cocoa.
If you are familiar with C programming but not with Carbon or Mac OS X, you want to learn how to design and implement a basic user interface and then learn how to build a Carbon application using Mac OS X development tools. After that, you’ll want to explore the various Carbon "managers" and "services" for APIs specific to your needs.
Before you begin development, you should familiarize yourself with the system architecture and user interface of Mac OS X. You should read:
Mac Technology Overview to learn about the major application environments available (Carbon, Cocoa, and Java).
Carbon Overview to familiarize yourself with the Carbon technologies available for application development.
Apple Human Interface Guidelines to learn what standard user interface elements are available in Mac OS X and to understand how to design your application's look and feel.
Choose a Learning Path
If you’re just beginning to develop Carbon applications, you may want to know how developing for Mac OS X differs from developing for other platforms. If you’re ready to develop for Mac OS X, you’ll want to learn how to use the Xcode development environment. If you’re familiar with Xcode, you’ll want to begin creating a simple user interface for Mac OS X.
Migrating from Another Platform
Before you begin development for Mac OS X, you may need to move your existing code from another platform.
If you’re a Windows developer, read Porting to Mac OS X from Windows Win32 API, which highlights differences to expect between Windows and Mac OS X and provides pointers to resources that can be useful in the porting process.
If you’re a UNIX or Linux developer, read Porting UNIX/Linux Applications to OS X to learn what makes Mac OS X different from other UNIX implementations and to learn how to port existing UNIX applications to the platform.
Developing with Xcode
To develop Carbon applications, Apple recommends using Xcode, which is included in the Developer Tools package included with Mac OS X v10.3 (Panther) and later. You should read:
Xcode 2.1 User Guide to learn about the tools used to design a user interface as well as build and debug applications.
A Tour of Xcode to learn how to use Xcode tools to build a simple Carbon application.
Once you’re familiar with Xcode, you’re ready to build a user interface for a Carbon application.
Building a User Interface
To build a user interface for your Carbon application, you should read:
Carbon Event Manager Programming Guide to understand the event-handling model for Carbon applications. Carbon events are the primary messaging mechanism between your application and system software, handling user interactions as well as low-level events.
Handling Carbon Windows and Controls to learn how to create and manipulate windows and controls in Carbon applications.
Creating Carbon Menus to learn how to implement menus in your Carbon application.
HIView Programming Guide to familiarize yourself with the object-oriented approach to implementing Carbon user interface objects. If you are planning to run your application on Mac OS X v10.2 (Jaguar) or later, you should adopt HIViews.
Unarchiving Interface Objects With Interface Builder Services to learn how to access Carbon user interface elements created using the Interface Builder tool, included with Xcode. Although you can create windows, controls, and menus programmatically, in most cases the preferred method is to create them in Interface Builder and store them as special "nib" files.
Learning Carbon from O'Reilly & Associates, which provides a book-length tutorial for building Carbon applications, including topics such as building the user interface, manipulating text, and printing. Even though this book uses an older development environment (Project Builder), much of the information is still useful for developers wanting to learn about Carbon.
Note that the Carbon user interface APIs are often referred to as the Human Interface Toolbox, High Level Toolbox, or, if you are using object-oriented HIViews, the HIToolbox.
The Carbon Reference Library includes the following high-level Carbon resource pages, which you can bookmark for easy access:
Conceptual and how-to information about Carbon technologies.
Focused, detailed descriptions in reference format for Carbon.
Late-breaking news about new or changed features in the Carbon API.
Sample applications demonstrating a wide variety of Carbon technologies. If you have installed the developer tools or Xcode CD, you may also want to check out the sample applications in Developer/Examples/Carbon.
Late-breaking documents on Carbon-related issues.
Programming tips, code samples, and FAQs by Apple’s support engineers.
The Carbon development mailing list (carbon-dev) is an excellent place to discuss programming issues or topics with fellow Carbon developers.
These additional resource pages may also be helpful:
A site containing useful information for developing, porting, and debugging Carbon applications.