Created
December 25, 2023 23:04
-
-
Save unxmaal/08f77af0eb89491d9eb37360d8548234 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Carbon Events API C++ Project for Mac OS 9 | |
## Project Files | |
1. **Main.cpp** - Main application source file. | |
2. **HelloWorld.r** - Resource file for defining UI elements. | |
## Main.cpp | |
```cpp | |
#include <Carbon/Carbon.h> | |
// Function Prototypes | |
OSStatus MyWindowEventHandler(EventHandlerCallRef callRef, EventRef event, void *userData); | |
void CreateMyWindow(); | |
void CreateButton(WindowPtr window); | |
int main(int argc, char* argv[]) { | |
IBNibRef nibRef; | |
OSStatus err; | |
// Initialize the Toolbox | |
err = MoreMasterPointers(64); | |
if (err == noErr) { | |
err = InitCursor(); | |
} | |
// Create the main window | |
CreateMyWindow(); | |
// Run the event loop | |
RunApplicationEventLoop(); | |
return 0; | |
} | |
void CreateMyWindow() { | |
Rect windowRect = {100, 100, 300, 400}; // Position and dimensions of the window | |
WindowRef window; | |
CreateNewWindow(kDocumentWindowClass, kWindowStandardDocumentAttributes, &windowRect, &window); | |
SetWindowTitleWithCFString(window, CFSTR("Hello World Window")); | |
ShowWindow(window); | |
// Create a button | |
CreateButton(window); | |
// Set up event handler for the window | |
EventTypeSpec eventTypes[] = { | |
{ kEventClassCommand, kEventCommandProcess } | |
}; | |
InstallWindowEventHandler(window, NewEventHandlerUPP(MyWindowEventHandler), GetEventTypeCount(eventTypes), eventTypes, (void *)window, NULL); | |
} | |
void CreateButton(WindowPtr window) { | |
ControlRef button; | |
Rect buttonBounds = { 110, 110, 140, 180 }; // Position and dimensions of the button | |
CreatePushButtonControl(window, &buttonBounds, CFSTR("Click Me"), &button); | |
SetControlCommandID(button, 'bttn'); | |
} | |
OSStatus MyWindowEventHandler(EventHandlerCallRef callRef, EventRef event, void *userData) { | |
OSStatus err = eventNotHandledErr; | |
HICommand command; | |
if (GetEventClass(event) == kEventClassCommand && GetEventKind(event) == kEventCommandProcess) { | |
GetEventParameter(event, kEventParamDirectObject, typeHICommand, NULL, sizeof(command), NULL, &command); | |
if (command.commandID == 'bttn') { | |
// Code to display "Hello" | |
CFUserNotificationDisplayNotice(0, kCFUserNotificationNoteAlertLevel, NULL, NULL, NULL, CFSTR("Hello"), CFSTR("Button clicked!"), NULL); | |
err = noErr; | |
} | |
} | |
return err; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment