TweetFollow Us on Twitter

Aug 92 Tips
Volume Number:8
Issue Number:4
Column Tag:Tips & Tidbits

Tips & Tidbits

By Neil Ticktin, Editor-in-Chief

MacTutor has a new column called “Tips and Tidbits”. This column is your opportunity to spread the word about little bits of information that you find out about. These tidbits can be programming related or they can be user tips that are particularly useful to programmers.

We really want to hear from you. MacTutor will pay $25 for every tip used, and the Tip of the Month will receive $50. To submit a tip, send in a letter to the magazine. Remember, AppleLink is our preferred method of communication, but feel free to send something via US Mail. If you do send mail, enclose a printed copy and a disk copy of the letter so that it does not have to be retyped.

Let us know what you think. Remember, this is your magazine. Try ‘em out and let us know...

Tip of the month

A frequently asked question is “How to make a menu bar within a window, but makeit SIMPLE?” I have found the answer deep in the UPMG folder on the 7.0 Beta-Bang CD-Rom. This folder is a “must read” for finding clever and simple answers to many questions of this kind. I have written the code below for better readability, but the credit for the trick must be given to the UPMG file. Before calling PopUpMenuSelect, install a MenuHook. In the hook, if the mouse is out of the menu rect (and out of the menu title rect), post a mouseUp event to exitPopUpMenuSelect.

Doing it this way, the user can browse between pop-up menus without releasing themouse button, exactly like in the real menu bar. Warning: abuse of this trick will quickly drive your program to a very disconcerting user-interface. Are you really sure you need a menu bar in thiswindow?

Benoît Widemann

/* 1 */

// Global variables

short gCurrentMenu;// current menu index
MenuHandle gMenu[NUMBER_OF_MENUS];
Rect gMenuTitleRect[NUMBER_OF_MENUS];  // menus title rects in window

// There was a click in window's menubar
// Returns the item selected or 0 if no selection
// If the returned item is non-zero, the menu index is gCurrentMenu

short windowMenuSelect(WindowPtr theWindow)
{
   ProcPtr saveMenuHook;
   Point p;
   short selectedItem;

   SetWRefCon(theWindow, SetCurrentA5());  // save our A5 in window refcon
   saveMenuHook = MenuHook;// save current value in MenuHook
   MenuHook = (ProcPtr)myMenuHook; // install our menu hook
   SetPort(theWindow);
   while (Button()){   // don't use StillDown here!!
   GetMouse(&p);
   for (gCurrentMenu=0; gCurrentMenu<NUMBER_OF_MENUS; gCurrentMenu++) 
 {
   // find in which menu title rect is the mouse
   if (PtInRect(p, &gMenuTitleRect[gCurrentMenu])) {
   InvertRect(&gMenuTitleRect[gCurrentMenu]);
   p.h = gMenuTitleRect[gCurrentMenu].left+1;
   p.v = gMenuTitleRect[gCurrentMenu].bottom+1;
   LocalToGlobal(&p);
   // use only the item part returned
   selectedItem = (short)(PopUpMenuSelect(gMenu[gCurrentMenu], p.v, p.h, 
0) &
0x0000FFFF);
   InvertRect(&gMenuTitleRect[gCurrentMenu]);
   break;
   }
   }
   }
   MenuHook = saveMenuHook;// restore Menu Hook
   return(selectedItem);
}

// the menu hook

pascal void myMenuHook()
{
   Point p;
   long sysA5;

   sysA5 = SetA5(GetWRefCon(FrontWindow())); // restore our A5
   GetMouse(&p);
   if (p.v < 20 && !PtInRect(p, &gMenuTitleRect[gCurrentMenu])) {
   (void)PostEvent(mouseUp, nil);  // exit PopUpMenuSelect
   }
   (void)SetA5(sysA5); // restore system A5
}

NEED FOR SPEED

To execute system routines efficiently, you can by-pass the trap dispatcher byjumping to the routine yourself. Most practicle in tight loops. Take for example the BLockMove routine. Rewrite it as MyBlockMove:

/* 2 */

CONST
  kBlockMoveNum = $A02E; 
{Get the BlockMove Trap word from Inside Macintosh Volume III, Appendix 
C}
VAR
  blockMoveAddress:LongInt;
BEGIN
  blockMoveAddress := GetTrapAddress(kBlockMoveNum);
  start loop...
    MyBlockMove(source,dest,size, blockMoveAddress);
  end loop...
END

Write MyBlockMove in assembler like this:

;3

PROCEDURE MyBlockMove
MOVE.L     A2,D2      /*Save off A2. We'll need it later
MOVE.L     (A7)+,D1   /*Move Return address into D1
MOVEA.L    (A7),A2    /*Put BlockMove address into A2
MOVE.L     (A7)+,D0   /*Place size into D0
MOVEA.L    (A7)+,A1   /*Place destination Ptr into A1
MOVEA.L    (A7)+,A0   /*Place source Ptr into A0
MOVE.L     D1,(A7)    /*BlockMove trashes D1 & D2.
                      /*Save D1(Return address) on stack
MOVE.L     D2,-(A7)   /*Save D2(value of A2) on stack
JSR        (A2)       /*Jump to BlockMove
MOVEA.L    (A7)+,A2   /*Restore A2
MOVEA.L    (A7)+,A1   /*Place Return address into A1
JMP        (A1)       /*Jump to Return Address

MyBlockMove must be in a resident segment!!! For any questions, send an applelink to ISS.

Mark Hajek

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

jAlbum Pro 12.6.4 - Organize your digita...
jAlbum Pro has all the features you love in jAlbum, but comes with a commercial license. With jAlbum, you can create gorgeous custom photo galleries for the Web without writing a line of code!... Read more
jAlbum 12.6.4 - Create custom photo gall...
With jAlbum, you can create gorgeous custom photo galleries for the Web without writing a line of code! Beginner-friendly, with pro results Simply drag and drop photos into groups, choose a design... Read more
Microsoft Remote Desktop 8.0.16 - Connec...
With Microsoft Remote Desktop, you can connect to a remote PC and your work resources from almost anywhere. Experience the power of Windows with RemoteFX in a Remote Desktop client designed to help... Read more
Spotify 1.0.4.90. - Stream music, create...
Spotify is a streaming music service that gives you on-demand access to millions of songs. Whether you like driving rock, silky R&B, or grandiose classical music, Spotify's massive catalogue puts... Read more
djay Pro 1.1 - Transform your Mac into a...
djay Pro provides a complete toolkit for performing DJs. Its unique modern interface is built around a sophisticated integration with iTunes and Spotify, giving you instant access to millions of... Read more
Vivaldi 1.0.118.19 - Lightweight browser...
Vivaldi browser. In 1994, two programmers started working on a web browser. Our idea was to make a really fast browser, capable of running on limited hardware, keeping in mind that users are... Read more
Stacks 2.6.11 - New way to create pages...
Stacks is a new way to create pages in RapidWeaver. It's a plugin designed to combine drag-and-drop simplicity with the power of fluid layout. Features: Fluid Layout: Stacks lets you build pages... Read more
xScope 4.1.3 - Onscreen graphic measurem...
xScope is powerful set of tools that are ideal for measuring, inspecting, and testing on-screen graphics and layouts. Its tools float above your desktop windows and can be accessed via a toolbar,... Read more
Cyberduck 4.7 - FTP and SFTP browser. (F...
Cyberduck is a robust FTP/FTP-TLS/SFTP browser for the Mac whose lack of visual clutter and cleverly intuitive features make it easy to use. Support for external editors and system technologies such... Read more
Labels & Addresses 1.7 - Powerful la...
Labels & Addresses is a home and office tool for printing all sorts of labels, envelopes, inventory labels, and price tags. Merge-printing capability makes the program a great tool for holiday... Read more

This Week at 148Apps: April 20-24, 2015
The Apps of April How do you know what apps are worth your time and money? Just look to the review team at 148Apps. We sort through the chaos and find the apps you're looking for. The ones we love become Editor’s Choice, standing out above the many... | Read more »
Discover Your Reflexes With Minimalist G...
Discover O, BYOF Studios, may look simple at first with its' color matching premise and swipe controls, but as you speed up the task becomes more daunting. [Read more] | Read more »
Here's Another Roundup of Notable A...
Now that the Apple Watch is publically available (kind of), even more apps and games have been popping up for it. Some of them are updates to existing software, others are brand new. The main thing is that they're all for the Apple Watch, and if you... | Read more »
Use Batting Average and the Apple Watch...
Batting Average, by Pixolini, is designed to help you manage your statistics. Every time you go to bat, you can use your Apple Watch to track  your swings, strikes, and hits. [Read more] | Read more »
Celebrate Studio Pango's 3rd Annive...
It is time to party, Pangoland pals! Studio Pango is celebrating their 3rd birthday and their gift to you is a new update to Pangoland. [Read more] | Read more »
Become the World's Most Important D...
Must Deliver, by cherrypick games, is a top-down endless-runner witha healthy dose of the living dead. [Read more] | Read more »
SoundHound + LiveLyrics is Making its De...
SoundHound Inc. has announced that SoundHound + LiveLyrics, will be one of the first third-party apps to hit the Apple Watch. With  SoundHound you'll be able to tap on your watch and have the app recognize the music you are listening to, then have... | Read more »
Adobe Joins the Apple Watch Lineup With...
A whole tidal wave of apps are headed for the Apple Watch, and Adobe has joined in with 3 new ways to enhance your creativity and collaborate with others. The watch apps pair with iPad/iPhone apps to give you total control over your Adobe projects... | Read more »
Z Steel Soldiers, Sequel to Kavcom'...
Kavcom has released Z Steel Soldiers, which continues the story of the comedic RTS originally created by the Bitmap Brothers. [Read more] | Read more »
Seene Lets You Create 3D Images With You...
Seene, by Obvious Engineering, is a 3D capture app that's meant to allow you to create visually stunning 3D images with a tap of your finger, and then share them as a 3D photo, video or gif. [Read more] | Read more »

Price Scanner via MacPrices.net

Final day for Best Buy’s 4 Day Sale: Up to $3...
Best Buy has the new 2015 13″ 1.6GHz/128GB MacBook Air on sale for $799.99 through April 27th. That’s $200 off MSRP, and it’s the lowest price available for this new model from any reseller. Choose... Read more
College Student Deals: Additional $50 off Mac...
Take an additional $50 off all MacBooks and iMacs at Best Buy Online with their College Students Deals Savings, valid through May 9, 2015. Anyone with a valid .EDU email address can take advantage of... Read more
Save up to $300 on a new Mac, $30 on an iPad,...
Purchase a new Mac or iPad at The Apple Store for Education and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free,... Read more
Zoho Business Apps for Apple Watch Put Select...
Pleasanton, California based Zoho has launched Zoho Business Apps for Apple Watch, a line of apps that extends Zoho business applications to let users perform select functions from an Apple Watch.... Read more
Universal Stylus Initiative Launched to Creat...
OEMs, stylus and touch controller manufacturers have announced the launch of Universal Stylus Initiative (USI), a new organization formed to develop and promote an industry specification for an... Read more
Amazon Shopping App for Apple Watch
With the new Amazon shopping app for Apple Watch, Amazon customers with one of the wearable devices can simply tap the app on the watch to purchase items in seconds, or save an idea for later. The... Read more
Mac Pros on sale for up to $260 off MSRP
B&H Photo has Mac Pros on sale for up to $260 off MSRP. Shipping is free, and B&H charges sales tax in NY only: - 3.7GHz 4-core Mac Pro: $2799, $200 off MSRP - 3.5GHz 6-core Mac Pro: $3719.99... Read more
Apple refurbished Time Capsules available for...
The Apple Store has certified refurbished Time Capsules available for $100 off MSRP. Apple’s one-year warranty is included with each Time Capsule, and shipping is free: - 2TB Time Capsule: $199, $100... Read more
Intel Compute Stick: A New Mini-Computing For...
The Intel Compute Stick, a new pocket-sized computer based on a quad-core Intel Atom processor running Windows 8.1 with Bing, is available now through Intel Authorized Dealers across much of the... Read more
Heal to Launch First One-Touch House Call Doc...
Santa Monica, California based Heal, a pioneer in on-demand personal health care services — will offer the first one-touch, on-demand house call doctor app for the Apple Watch. Heal’s Watch app,... Read more

Jobs Board

*Apple* iOS Specialist - TCML (United States...
AppleiOS Specialist Senior Apple /iOS Administrator/Engineer responsible for configuration and distribution of desktop, laptop and mobile devices to State Employees Read more
*Apple* Client Systems Solution Specialist -...
…drive revenue and profit in assigned sales segment and/or region specific to the Apple brand and product sets. This person will work directly with CDW Account Managers Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Support Technician IV - Jack Henry a...
Job Description Jack Henry & Associates is seeking an Apple Support Technician. This position while acting independently, ensures the proper day-to-day control of Read more
*Apple* Client Systems Solution Specialist -...
…drive revenue and profit in assigned sales segment and/or region specific to the Apple brand and product sets. This person will work directly with CDW Account Managers Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.