AmendHub

Download

schrockwell

/

PopUp

/

README

 

(View History)

schrockwell   Rename kPopUpStyleAll to kPopUpStyleDefault Latest amendment: 2 on 2025-10-15

1 Easy Pop-Up Menus for System 6!
2 Rockwell Schrock <rockwell@schrock.me>
3 https://schrockwell.com
4
5 This library makes it more convenient to add pop-up menus to System 6
6 applications.
7
8 In System 7 and later, you can define a control with procID 1008, but
9 prior to that, some hand-holding is required to achieve the expected
10 control behavior.
11
12 These functions take care of the grunt work for System 6:
13
14 - drawing the control
15 - opening the menu with PopUpMenuSelect()
16 - storing the selected item
17
18 To use it, you only need to provide:
19
20 - a WindowPtr for the containing window
21 - a Rect for the bounds of the menu control
22 - a MenuHandle to the menu
23 - styling options
24
25 ...and add hooks in three places:
26
27 1. Initialization
28 2. Event loop
29 3. Window update
30
31 See PopUp.h for more documentation and styling options.
32
33 === Example ===
34
35 // 1. Initialization
36
37 PopUpPtr gPopup; // <---
38
39 void WindowInit()
40 {
41 WindowPtr window;
42 Rect windRect;
43 Rect popupRect = { 10, 10, 29, 120 }; // <--- recommend 19px height
44 MenuHandle menu;
45
46 window = GetNewWindow(kBaseResID, nil, kMoveToFront);
47 menu = GetMenu(kPopUpMenuResourceID);
48
49 gPopup = CreatePopUp(window, &popupRect, menu, kPopUpStyleDefault); // <---
50
51 SetPort(window);
52 ShowWindow(window);
53 }
54
55 // 2. Event loop
56
57 void DoEvent(EventRecord *eventPtr)
58 {
59 if (HandlePopUpEvent(gPopup, eventPtr)) // <---
60 {
61 // gPopup->item contains the newly-selected item
62 return;
63 }
64
65 // ...rest of event handlers...
66 }
67
68 // 3. Window updates
69
70 void DoUpdate(EventRecord *eventPtr)
71 {
72 WindowPtr window = (WindowPtr)eventPtr->message;
73
74 BeginUpdate(window);
75
76 DrawPopUp(gPopup); // <---
77
78 EndUpdate(window);
79 }