Article: Q103036
Product(s): Microsoft Windows Software Development Kit
Version(s): WINDOWS:3.1
Operating System(s):
Keyword(s):
Last Modified: 06-NOV-1999
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Windows Software Development Kit (SDK) 3.1
-------------------------------------------------------------------------------
SYMPTOMS
========
Calling the AddAtom function in the Windows 3.x environment with a string that
begins with the pound (#) character causes the system to display the following
error message in a system modal dialog:
Application Error
integer divide by 0
This error occurs if the first AddAtom call in the application passes a string
containing a # as the first character, and passes non-numeric characters in the
rest of the string. For example, the first call to AddAtom with the string
"#string" will cause the error to occur.
RESOLUTION
==========
If it is necessary to have atom strings beginning with the # character, first
call AddAtom with a false string that contains no # characters. Alternatively,
call InitAtomTable before adding the first atom string beginning with the #
character.
STATUS
======
Microsoft has confirmed this to be a bug in Windows versions 3.0 and 3.1. We are
researching this problem and will post new information here in the Microsoft
Knowledge Base as it becomes available.
MORE INFORMATION
================
Atoms with names begin with the # character are strongly discouraged. The #
character serves a special purpose for atoms. If the string that is passed to
AddAtom has the form "#1234", AddAtom returns an integer atom whose value is the
16-bit value representation of the decimal number specified in the string. If
the decimal value specified is 0 (zero) or a value in the range 0xC000 through
0xFFFF, the return value is zero, indicating an error.
Sample Code
-----------
/* Compile options needed: /Zp /GA or /GD or /Gw */
// errant code
{
ATOM at;
at = AddAtom("#string"); // causes error to occur
}
// corrected code
{
ATOM at;
InitAddTable(17);
// or call AddAtom with a false string
AddAtom("false");
at = AddAtom("#string"); // no error occurs
}
Additional query words: 3.00 3.10
======================================================================
Keywords :
Technology : kbAudDeveloper kbWin3xSearch kbSDKSearch kbWinSDKSearch kbWinSDK310
Version : WINDOWS:3.1
=============================================================================