TweetFollow Us on Twitter

Mar 96 Top 10
Volume Number:12
Issue Number:3
Column Tag:Symantec Top 10

Symantec Top 10

This monthly column, written by Symantec’s Technical Support Engineers, is intended to give our readers technical information on using Symantec products.

By Kevin Quah and Noah Lieberman, Symantec Technical Support

Note: Source code files accompanying article are located on MacTech CD-ROM or source code disks.

Q: I am using the Visual Architect and cannot find a way to change the background color of my window. Is there a way to do this using the VA?

A: Although you cannot do this in VA, you can do it programmatically using the toolbox. The class CDocument has a data member macPort, which is a pointer to a GrafPort structure (see below). One of the fields of this structure is rgbFgColor, of type RGBColor. You can set this field with the toolbox call RGBForeColor() which takes an RGBColor as an argument. It will set the rgbFgColor field of the current CGrafPort to the color specified.

If you do not already have an RGBColor ready to pass, you can simply declare one, and set its three fields (between 0 and 65535) to get the color you want.

RGBColor myRGB;
myRGB.red = 0;   // Black
myRGB.blue = 0;
myRGB.green = 0; 

The only thing left to worry about is making sure that the right CGrafPort is current when you call RGBForeColor(); a good place to do this is in the MakeNewWindow() function in your CDocument object. A default VA project will produce the file x_CMain.cp (derived from CDocument). Notice the data member itsWindow in the first line. This is a pointer to a CWindow, the one that goes with the default CView in the Visual Architect .rsrc file, Main.

Override x_CMain::MakeNewWindow() in CMain. In CMain::MakeNewWindow(), first call x_CMain::MakeNewWindow, call the Prepare() function of your CWindow object (itsWindow), and call RGBForeColor() to set the color.

x_CMain::MakeNewWindow();
itsWindow->Prepare();
RGBForeColor(&myRGB);

Note: Although macPort is declared as a GrafPort, you can get at the CGrafPort fields by casting it to a CGrafPort; e.g., (CGrafPort)macPort->rgbFgColor.

Q: CDialogText seems to report keystrokes to its supervisor, but fails to report cuts and pastes. In the Visual Architect, I chose Classes from the Edit menu and defined a new class. If you type the name of a Library Class, VA will remember it correctly, but if you paste in the name of the Library Class, VA will forget it as soon as you close the dialog box or as soon as you click on another class name in the scrolling list. What is wrong?

A: There is a bug in CDialogText which will be fixed in a later release. For now, please make this change to CDialogText.cp:

virtual voidDoCommand(long theCommand);

void CDialogText::DoCommand(
 long   theCommand)
{
 inherited::DoCommand(theCommand);

 switch (theCommand)
 {
 case cmdCut:
 case cmdPaste:
 case cmdClear:
 if (editable)
    /* ID is identifier for this view */
 BroadcastChange(dialogTextChanged, &ID); 
 break;

 default:
 break;
 }
}

Q: I want to set a breakpoint in a function that is not in the file that is currently displayed in the Debugger window. How do I do this?

A: When you choose Run with Debugger from the project menu, the debugger will come up and place you at the beginning of the program. Switch back to the project manager and double-click the file you want to debug from the project window. Choose Debug File from the Project menu. This will bring you back into the debugger with the chosen file displayed in the debugger window. Now you can set your breakpoint.

Q: I’m trying to use floating-point numbers in my VA project using Symantec C++ 7.0.x, and I am getting wildly inaccurate results.

A: By default, a VA project includes ANSI_small++, which does not support floating-point numbers. Remove ANSI_small++ and replace it with ANSI++.

Q: I am familiar with command-line compilers where you would use a -d switch to define something for the entire project. How do you do this in Symantec C++?

A: In the Project Options dialog, select the compiler you are using (for example PowerPC C, or MrC++), and then select the Prefix page. Anything you add to the prefix will be globally defined.

Q: I have a single-segment code resource that was working fine. Now that I have made it multi-segment, it is crashing all over the place. I am not using any globals, so I should not need to set up A4 - right?

A. In multi-segment code resources, THINK C stores string literals the same way as globals. If you are using literals and constants, you still need to set up A4. In single-segment code resources, string literals are stored in code and you don’t need to set up A4 to use them. Symantec C++ handles string literals in code resources in the same way that THINK C does - unless you turn on Put String Literals in Code on the Compiler Options page of the Options dialog. Then, Symantec C++ will store string literals in code, and you will not need to set up A4 to use them.

Q: I need to access a data member or member function of my CApp class. How do I do this?

A: In CApp.h, add this statement:

 #define gApp ((CApp*)gApplication)

Now gApp will be a globally scoped pointer variable that you can use to access your CApp member functions or data members.

Q: I would like to use the MrC and MrC++ translators to compile an existing SPM C/C++ project. How do I do this?

A: a. Choose Options from the Project menu.

b. Click on the Extensions icon in the left scrolling window.

c. Select the .c file extension.

d. Set the Translator popup menu to SPM MrC.

e. Click on the Replace button.

Repeat steps (c) though (e) for .cp and .cpp file extensions, except set the Translator for both extensions to SPM MrC++. Click Save. Update and run your project.

The SPM MrC and MrC++ translators take a longer time to compile, but they produce code that is highly optimized. To view performance benchmarks visit the website:

http://www.symantec.com/lit/dev/macprdet.html

We recommend that you use the default translators (PowerPC C and PowerPC C++) during the earlier phases of development for fast edit-compile-debug cycles, and then switch to SPM MrC or MrC++ to create the later optimized builds of the product.

Q: I am trying to use the new MrC/MrC++ compiler off the Release 4 CD, and even on the most basic projects I am getting strange link errors such as: undefined symbol .B2S997, .B2S998, .B2S999. Am I doing something wrong?

A: In order to use the SPM MrC or MrC++ compilers, you must use the latest Symantec Project Manager 8.04d11 (or later). It may be found in the Pre-release Symantec C++ for Power Mac folder.

Q: My project now uses SPM MrC and SPM MrC++ translators. When I compile I get the warning:

Prefix "SPM MrC++";

While compiling "main.cp"

Warning: debugging symbols can't be generated with optimizations on

What is wrong?

A: It is not possible to debug optimized code with MrC/MrC++. If you select Optimizer On and also check the debug diamond in the project window, no debug information will be generated and you will get a warning to that effect.

Correction:

In the January MacTech Magazine Symantec Top 10 article, there was a question regarding how to add note files and ReadMe files to a SPM project. The solution was to make a <<none>> translator and map this to an extension such as .note. This procedure is not recommended and may cause project corruption.

There are two correct methods for adding non-source files to a project. Either hold down the command-key and drag a file to the project window (drag-and-drop method), or choose Add Files... from the Project menu, and then select All Files from the Show: popup menu. You can then add non-source files to your project. For more information, please consult pp. 16-17 of your User’s Guide.

Special Thanks To:

Michael Hopkins, Andrew McFarland, Yuen Li, Mark Baldwin, Glenn Austin, Craig Conner, Tom Emerson, John Micco and Jeff Weeks.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Latest Forum Discussions

See All

Six fantastic ways to spend National Vid...
As if anyone needed an excuse to play games today, I am about to give you one: it is National Video Games Day. A day for us to play games, like we no doubt do every day. Let’s not look a gift horse in the mouth. Instead, feast your eyes on this... | Read more »
Old School RuneScape players turn out in...
The sheer leap in technological advancements in our lifetime has been mind-blowing. We went from Commodore 64s to VR glasses in what feels like a heartbeat, but more importantly, the internet. It can be a dark mess, but it also brought hundreds of... | Read more »
Today's Best Mobile Game Discounts...
Every day, we pick out a curated list of the best mobile discounts on the App Store and post them here. This list won't be comprehensive, but it every game on it is recommended. Feel free to check out the coverage we did on them in the links below... | Read more »
Nintendo and The Pokémon Company's...
Unless you have been living under a rock, you know that Nintendo has been locked in an epic battle with Pocketpair, creator of the obvious Pokémon rip-off Palworld. Nintendo often resorts to legal retaliation at the drop of a hat, but it seems this... | Read more »
Apple exclusive mobile games don’t make...
If you are a gamer on phones, no doubt you have been as distressed as I am on one huge sticking point: exclusivity. For years, Xbox and PlayStation have done battle, and before this was the Sega Genesis and the Nintendo NES. On console, it makes... | Read more »
Regionally exclusive events make no sens...
Last week, over on our sister site AppSpy, I babbled excitedly about the Pokémon GO Safari Days event. You can get nine Eevees with an explorer hat per day. Or, can you? Specifically, you, reader. Do you have the time or funds to possibly fly for... | Read more »
As Jon Bellamy defends his choice to can...
Back in March, Jagex announced the appointment of a new CEO, Jon Bellamy. Mr Bellamy then decided to almost immediately paint a huge target on his back by cancelling the Runescapes Pride event. This led to widespread condemnation about his perceived... | Read more »
Marvel Contest of Champions adds two mor...
When I saw the latest two Marvel Contest of Champions characters, I scoffed. Mr Knight and Silver Samurai, thought I, they are running out of good choices. Then I realised no, I was being far too cynical. This is one of the things that games do best... | Read more »
Grass is green, and water is wet: Pokémo...
It must be a day that ends in Y, because Pokémon Trading Card Game Pocket has kicked off its Zoroark Drop Event. Here you can get a promo version of another card, and look forward to the next Wonder Pick Event and the next Mass Outbreak that will be... | Read more »
Enter the Gungeon review
It took me a minute to get around to reviewing this game for a couple of very good reasons. The first is that Enter the Gungeon's style of roguelike bullet-hell action is teetering on the edge of being straight-up malicious, which made getting... | Read more »

Price Scanner via MacPrices.net

Take $150 off every Apple 11-inch M3 iPad Air
Amazon is offering a $150 discount on 11-inch M3 WiFi iPad Airs right now. Shipping is free: – 11″ 128GB M3 WiFi iPad Air: $449, $150 off – 11″ 256GB M3 WiFi iPad Air: $549, $150 off – 11″ 512GB M3... Read more
Apple iPad minis back on sale for $100 off MS...
Amazon is offering $100 discounts (up to 20% off) on Apple’s newest 2024 WiFi iPad minis, each with free shipping. These are the lowest prices available for new minis among the Apple retailers we... Read more
Apple’s 16-inch M4 Max MacBook Pros are on sa...
Amazon has 16-inch M4 Max MacBook Pros (Silver and Black colors) on sale for up to $410 off Apple’s MSRP right now. Shipping is free. Be sure to select Amazon as the seller, rather than a third-party... Read more
Red Pocket Mobile is offering a $150 rebate o...
Red Pocket Mobile has new Apple iPhone 17’s on sale for $150 off MSRP when you switch and open up a new line of service. Red Pocket Mobile is a nationwide MVNO using all the major wireless carrier... Read more
Switch to Verizon, and get any iPhone 16 for...
With yesterday’s introduction of the new iPhone 17 models, Verizon responded by running “on us” promos across much of the iPhone 16 lineup: iPhone 16 and 16 Plus show as $0/mo for 36 months with bill... Read more
Here is a summary of the new features in Appl...
Apple’s September 2025 event introduced major updates across its most popular product lines, focusing on health, performance, and design breakthroughs. The AirPods Pro 3 now feature best-in-class... Read more
Apple’s Smartphone Lineup Could Use A Touch o...
COMMENTARY – Whatever happened to the old adage, “less is more”? Apple’s smartphone lineup. — which is due for its annual refresh either this month or next (possibly at an Apple Event on September 9... Read more
Take $50 off every 11th-generation A16 WiFi i...
Amazon has Apple’s 11th-generation A16 WiFi iPads in stock on sale for $50 off MSRP right now. Shipping is free: – 11″ 11th-generation 128GB WiFi iPads: $299 $50 off MSRP – 11″ 11th-generation 256GB... Read more
Sunday Sale: 14-inch M4 MacBook Pros for up t...
Don’t pay full price! Amazon has Apple’s 14-inch M4 MacBook Pros (Silver and Black colors) on sale for up to $220 off MSRP right now. Shipping is free. Be sure to select Amazon as the seller, rather... Read more
Mac mini with M4 Pro CPU back on sale for $12...
B&H Photo has Apple’s Mac mini with the M4 Pro CPU back on sale for $1259, $140 off MSRP. B&H offers free 1-2 day shipping to most US addresses: – Mac mini M4 Pro CPU (24GB/512GB): $1259, $... Read more

Jobs Board

All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.