Cross-platform GUI development in C.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

37 lines
1.3 KiB

  1. #import <Cocoa/Cocoa.h>
  2. #import "main.h"
  3. void* CBR_CreateWindow(CBR_CreateWindowParams params) {
  4. id window = [
  5. [NSWindow alloc] initWithContentRect:NSMakeRect(params.rect.x, params.rect.y, params.rect.width, params.rect.height)
  6. styleMask: (NSWindowStyleMask)params.style_flags
  7. backing:NSBackingStoreBuffered
  8. defer:NO
  9. ];
  10. [window cascadeTopLeftFromPoint:NSMakePoint(0,0)];
  11. [window setTitle: [NSString stringWithUTF8String:(params.title)]];
  12. [window makeKeyAndOrderFront:nil];
  13. return (__bridge void *)(window);
  14. }
  15. int main() {
  16. @autoreleasepool{
  17. [NSApplication sharedApplication];
  18. [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
  19. id applicationName = [[NSProcessInfo processInfo] processName];
  20. void* window = CBR_CreateWindow((CBR_CreateWindowParams) {
  21. .rect = {
  22. .x = WINDOW_X,
  23. .y = WINDOW_Y,
  24. .width = WINDOW_WIDTH,
  25. .height = WINDOW_HEIGHT
  26. },
  27. .style_flags = CBR_WINDOW_STYLE_FLAG_TITLED | CBR_WINDOW_STYLE_FLAG_CLOSABLE | CBR_WINDOW_STYLE_FLAG_RESIZABLE | CBR_WINDOW_STYLE_FLAG_MINIATURIZABLE | CBR_WINDOW_STYLE_FLAG_FULL_SCREEN,
  28. .title = [applicationName cStringUsingEncoding:NSUTF8StringEncoding]
  29. });
  30. [NSApp activateIgnoringOtherApps:YES];
  31. [NSApp run];
  32. }
  33. return 0;
  34. }