WNDCLASS
The WNDCLASS
structure contains the window class attributes that are registered by the RegisterClass
typedef struct _WNDCLASS { // wc
UINT style;
WNDPROC
lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HANDLE hInstance;
HICON hIcon;
HCURSOR
hCursor;
HBRUSH hbrBackground;
LPCTSTR
lpszMenuName;
LPCTSTR
lpszClassName;
} WNDCLASS;
Members
style
Specifies the
class style(s). Styles can be combined by using the bitwise OR (|) operator.
This member can be any combination of the following values:
Value |
Action |
CS_BYTEALIGNCLIENT |
Aligns the
window s client area on the byte boundary (in the x direction)
to enhance performance during drawing operations. This style affects the
width of the window and its horizontal position on the display. |
CS_BYTEALIGNWINDOW |
Aligns a
window on a byte boundary (in the x direction) to enhance performance during
operations that involve moving or sizing the window. This style affects the
width of the window and its horizontal position on the display. |
CS_CLASSDC |
Allocates
one device context to be shared by all windows in the class. Because window
classes are process specific, it is possible for multiple threads of a
multithreaded application to create a window of the same class. It is also
possible for the threads to attempt to use the device context simultaneously.
When this happens, the operating system allows only one of the threads to
successfully finish its drawing operation. |
CS_DBLCLKS |
Sends
double-click messages to the window procedure when the user double-clicks the
mouse while the cursor is within a window belonging to the class. |
CS_GLOBALCLASS |
Allows an
application to create a window of the class regardless of the value of the hInstance
parameter passed to the CreateWindow |
|
You can
create a global class by creating the window class in a dynamic-link library
(DLL) and listing the name of the DLL in the registry under the following
keys: |
|
HKEY_LOCAL_MACHINE\Software |
|
Whenever a
process starts, the operating system loads the specified DLLs in the context
of the newly started process before calling the main function in that
process. The DLL must register the class during its initialization procedure
and must specify the CS_GLOBALCLASS style. |
CS_HREDRAW |
Redraws the
entire window if a movement or size adjustment changes the width of the
client area. |
CS_NOCLOSE |
Disables
the Close command on the System menu. |
CS_OWNDC |
Allocates a
unique device context for each window in the class. |
CS_PARENTDC |
Sets the
clipping region of the child window to that of the parent window so that the
child can draw on the parent. A window with the CS_PARENTDC style bit
receives a regular device context from the system s cache of device contexts. It does not give the
child the parent s device context or device context settings.
Specifying CS_PARENTDC enhances an application s performance. |
CS_SAVEBITS |
Saves, as a
bitmap, the portion of the screen image obscured by a window. Windows uses
the saved bitmap to re-create the screen image when the window is removed.
Windows displays the bitmap at its original location and does not send WM_PAINT |
CS_VREDRAW |
Redraws the
entire window if a movement or size adjustment changes the height of the
client area. |
lpfnWndProc
Points to the
window procedure. For more information, see WindowProc
cbClsExtra
Specifies the
number of extra bytes to allocate following the window-class structure. The
operating system initializes the bytes to zero.
cbWndExtra
Specifies the
number of extra bytes to allocate following the window instance. The operating
system initializes the bytes to zero. If an application uses the WNDCLASS
structure to register a dialog box created by using the CLASS directive
in the resource file, it must set this member to DLGWINDOWEXTRA.
hInstance
Identifies
the instance that the window procedure of this class is within.
hIcon
Identifies
the class icon. This member must be a handle of an icon resource. If this
member is NULL, an application must draw an icon whenever the user minimizes
the application s window.
hCursor
Identifies
the class cursor. This member must be a handle of a cursor resource. If this
member is NULL, an application must explicitly set the cursor shape whenever
the mouse moves into the application s
window.
hbrBackground
Identifies
the class background brush. This member can be a handle to the physical brush
to be used for painting the background, or it can be a color value. A color
value must be one of the following standard system colors (the value 1 must be
added to the chosen color). If a color value is given, you must convert it to
one of the following HBRUSH types:
COLOR_ACTIVEBORDER
COLOR_ACTIVECAPTION
COLOR_APPWORKSPACE
COLOR_BACKGROUND
COLOR_BTNFACE
COLOR_BTNSHADOW
COLOR_BTNTEXT
COLOR_CAPTIONTEXT
COLOR_GRAYTEXT
COLOR_HIGHLIGHT
COLOR_HIGHLIGHTTEXT
COLOR_INACTIVEBORDER
COLOR_INACTIVECAPTION
COLOR_MENU
COLOR_MENUTEXT
COLOR_SCROLLBAR
COLOR_WINDOW
COLOR_WINDOWFRAME
COLOR_WINDOWTEXT
The operating system automatically deletes class background brushes
when the class is freed. An application should not delete these brushes,
because a class may be used by multiple instances of an application.
When this member is NULL, an application must paint its own background
whenever it is requested to paint in its client area. To determine whether the
background must be painted, an application can either process the WM_ERASEBKGND
message or test the fErase member of the PAINTSTRUCT
lpszMenuName
Points to a
null-terminated character string that specifies the resource name of the class
menu, as the name appears in the resource file. If you use an integer to
identify the menu, use the MAKEINTRESOURCE
lpszClassName
Points to a
null-terminated string or is an atom. If this parameter is an atom, it must be
a global atom created by a previous call to the GlobalAddAtom function.
The atom, a 16-bit value, must be in the low-order word of lpszClassName;
the high-order word must be zero.
If lpszClassName is a string, it specifies the window class
name.
See Also