7 out of 168 rated this helpful - Rate this topic

RegisterClass function

Applies to: desktop apps only

Registers a window class for subsequent use in calls to the CreateWindow or CreateWindowEx function.

Note  The RegisterClass function has been superseded by the RegisterClassEx function. You can still use RegisterClass, however, if you do not need to set the class small icon.

Syntax

ATOM WINAPI RegisterClass(
  __in  const WNDCLASS *lpWndClass
);

Parameters

lpWndClass [in]

Type: const WNDCLASS*

A pointer to a WNDCLASS structure. You must fill the structure with the appropriate class attributes before passing it to the function.

Return value

Type:

Type: ATOM

If the function succeeds, the return value is a class atom that uniquely identifies the class being registered. This atom can only be used by the CreateWindow, CreateWindowEx, GetClassInfo, GetClassInfoEx, FindWindow, FindWindowEx, and UnregisterClass functions and the IActiveIMMap::FilterClientWindows method.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

If you register the window class by using RegisterClassA, the application tells the system that the windows of the created class expect messages with text or character parameters to use the ANSI character set; if you register it by using RegisterClassW, the application requests that the system pass text parameters of messages as Unicode. The IsWindowUnicode function enables applications to query the nature of each window. For more information on ANSI and Unicode functions, see Conventions for Function Prototypes.

All window classes that an application registers are unregistered when it terminates.

No window classes registered by a DLL are unregistered when the DLL is unloaded. A DLL must explicitly unregister its classes when it is unloaded.

Examples

For an example, see Associating a Window Procedure with a Window Class.

Requirements

Minimum supported client

Windows 2000 Professional

Minimum supported server

Windows 2000 Server

Header

Winuser.h (include Windows.h)

Library

User32.lib

DLL

User32.dll

Unicode and ANSI names

RegisterClassW (Unicode) and RegisterClassA (ANSI)

See also

Reference
CreateWindow
CreateWindowEx
FindWindow
FindWindowEx
GetClassInfo
GetClassInfoEx
GetClassName
RegisterClassEx
UnregisterClass
WindowProc
WNDCLASS
Conceptual
Window Classes

 

 

Send comments about this topic to Microsoft

Build date: 2/3/2012

Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
Doc Bug
IActiveIMMap should be IActiveIMMApp
More remarks
This function seems to rearrange the WndClass structure to a WndClassEx structure and eventually calls RegisterClassEx().

Missing to zero-out some unused structure members may lead to CreateWindowEx(), not RegisterClass(), to fail with some unexpected GetLastError() code. This is especially hard to track when you register a self-made dialog control that is embedded in a dialog resource and loaded with one of the DialogBox() functions.
avoid testing the return value of this function
Since a class an only be registered once the second caller will fail if it tries to register the class again.

Instead of trying to detect this using GetClassInfo(), a solution that does not work in a multi-threaded program due to a race condition; it is better to simply ignore the return value from this function and pick up the failure when CreateWindow() is called as that will fail due to "class not registered".