Для регистрации класса окон удобно использовать функцию следующего вида:
int RegClass(WNDPROC Proc, LPCTSTR szName)
{
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra = wc.cbWndExtra = 0;
wc.lpfnWndProc = Proc;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszMenuName = (LPCTSTR)NULL;
wc.lpszClassName = szName;
return RegisterClass(&wc);
}
Формальными параметрами этой функции являются указатели на функцию окна и строку с именем класса. Имя, список формальных параметров и тип возврата функции могут быть любыми другими. Главное, чтобы приложению после регистрации были доступны имя зарегистрированного класса, а операционной системе – функция окна этого класса. Поясним некоторые операторы этой функции.
Не используются дополнительные данные:
wc.cbClsExtra = wc.cbWndExtra = 0;
Поле hInstance содержит дескриптор текущего приложения:
wc.hInstance = hInstance;
Функция RegisterClass регистрирует класс в операционной системе. Ее аргументом является адрес подготовленной структуры wc. При успешной регистрации класса она возвращает ненулевое значение, иначе – нуль. Оператор возврата функции RegClass:
return RegisterClass(&wc);
в случае успешной регистрации класса возвращает ненулевое значение, иначе – нуль.