devxlogo

The Latest

Print Gray Lines and Areas

Black and white printers cannot print gray lines, but they can dither to create gray areas. To create a gray border around an area, draw thin gray boxes with DrawStyle

Trick Setup Wizard

Don’t you hate that VB5’s Setup Wizard doesn’t include all the files you reference in your application? For example, if you access a picture or animation file at run time

Loading Graphics Before You Display Them

Many sites include rollover effects to make images change when the mouse moves over them. However, sometimes there’s an unsightly delay while the second graphic is downloaded from the server.

What to Tell Browsers that Don’t Support Java

If you’re not careful about how you include Java applets in your Web pages, people who use browsers that don’t support Java (or who have deliberately switched off Java support)

Be Polite to Frameless Browsers

Older browsers that don’t support HTML frames won’t display anything when they attempt (and fail) to load a page containing the code to set up frames. So a good design

Forcing a Page to be Loaded from the Server

To save time, browsers often load a frequently visited page from a local cache on the client’s computer rather than request it from the relevant Web server. The catch with

Getting Spaced Out

HTML’s page layout features are limited for older browsers–tables provide one of the few ways you can force text or graphics to appear in particular positions. Another addition to your

Undefined Behavior vs. Unspecified Behavior

The terms “undefined behavior” and “unspecified behavior” are not interchangeable. Undefined behavior indicates that an implementation may behave unpredictably when a program reaches a certain state, which almost without exception

Member Alignment

Manual calculation of a struct/class size is not just an indication of poor design and a source of maintenance problems; it may also lead to bugs that are very hard

Sizeof or strlen()?

What’s wrong with the following code excerpt? const char name[] = “john doe”; //9 characters, null char implicitly added by compilersize_t namesz = strlen(name); //namesz equals 8! Nothing, in fact.

Correct Path Names

You may have encountered this problem before–your program contains a full path name of a file, into which data has to be written or read from: FILE * f =

Restrictions on Operator Overloading

The following restrictions apply to operator overloading: 1. Invention of new operators is not allowed. For example: void operator @ (int) ; //illegal, @ is not a built-in operator or

The Trouble with Triggers, Part II

et’s talk about when and why we use triggers and the technical details of how to write a trigger. To recap, a trigger is a stored piece of code that

Invoking the Default Browser

Here’s a Visual Basic routine that invokes the default browser: Private Declare Function ShellExecute Lib”shell32.dll” Alias “ShellExecuteA” (ByValhwnd As Long, ByVal lpOperation As String,ByVal lpFile As String, ByVal lpParametersAs String,

FTP with Java

Normally, from within a Java applet you can create a java.net.URL instance using the “ftp://” protocol handler. But you may need a third-party library to access FTP from a Java

Days Left Until Specific Date

Using the Date functionality in JavaScript, you can post the number of days left until a certain date. Internally, JavaScript stores dates as the number of milliseconds from midnight (GMT)

A Quick Explorer-Like Interface

Although the new VB5 Application Wizard can build a shell application with an Explorer-like interface, it is often desirable to drop a quick Explorer form into your code without the

Applying procedure to every file on a drive

Question: For EVERY filename present on a hard drive, I need to convert the path and filename to a string and then evaluate the string for certain conditions. If those

CDONTS.NewMail does not send

Question: Hi, I have set up SMTP and I’m trying to send e-mail. It appears to work, and reports no errors, but the mail is not sent to the recipient,

VB and ISP and Web-based analysis

Question: I have numerous data analysis programs written in VB4/5 that I would like to put on a server for server-based data analysis. It would require uploading data files from

Create Timeline Templates

When utilizing project management tools, create a timeline template that models your development methodology. Set up the dependencies and defaults within this template. Then you can copy and paste it

ANALYZE Your Visual Source Safe Database

Set up a task in your scheduler of choice to run the ANALYZE.EXE programagainst your Visual Source Safe (VSS) database at least once a month.This tool allows VSS to check

Who’s Backing Up Your Source Code?

Utilizing version control systems is very important, but if no one is backing up your version control database, you are needlessly stepping close to the brink of disaster. Most source

Set Up Useful Shortcuts in the Send To Folder

If you develop applications that use components that need to be registered, consider setting up a shortcut to regsvr32 in the “Send To” folder on a user’s machine as part

Better Alternatives to Macros

Macros in C++ are better avoided. They are unsafe, hard to debug, and may bloat your .exe files. C++ offers significantly better alternatives to them: 1. Function-like macros should be

Before You Resort to Void *…

Void * can serve as a generic data pointer, yet it suffers from the well-known ailments associated with pointers: it can be NULL or a dangling pointer. Furthermore, it usually

Default Template Argument

Like ordinary functions, templates can have default type arguments. A good example is STL’s vector. It actually has two arguments–the second one is an allocator class template. Since an allocator