WinSimpleClass::WinSimpleClass
ResString resStr (hInst, resId);
_name = resStr;
}
HWND WinSimpleClass::GetRunningWindow
HWND hwnd = ::FindWindow
if (::IsWindow
HWND hwndPopup = ::GetLastActivePopup
if (::IsWindow
} else hwnd = 0;
return hwnd;
}
class WinClass
public:
WinClass(char const* className, HINSTANCE hInst, WNDPROC wndProc);
WinClass(int resId, HINSTANCE hInst, WNDPROC wndProc);
void SetBgSysColor (int sysColor) {
_class.hbrBackground = reinterpret_cast
}
void SetResIcons(int resId);
void Register();
protected:
void SetDefaults();
WNDCLASSEX
};
WinClass::WinClass
_class.lpfnWndProc = wndProc;
SetDefaults();
}
WinClass::WinClass
_class.lpfnWndProc = wndProc;
SetDefaults();
}
void WinClass::SetDefaults
// Provide reasonable default values
_class.cbSize = sizeof (WNDCLASSEX);
_class.style = 0;
_class.lpszClassName = GetName();
_class.hInstance = GetInstance();
_class.hIcon = 0;
_class.hIconSm = 0;
_class.lpszMenuName = 0;
_class.cbClsExtra = 0;
_class.cbWndExtra = 0;
_class.hbrBackground = reinterpret_cast
_class.hCursor = ::LoadCursor(0, IDC_ARROW);
}
void WinClass::SetResIcons
_class.hIcon = reinterpret_cast
// Small icon can be loaded from the same resource
_class.hIconSm = reinterpret_cast
}
void WinClass::Register
if (::RegisterClassEx
}
class TopWinClass
public:
TopWinClass(int resId, HINSTANCE hInst, WNDPROC wndProc);
};
TopWinClass::TopWinClass
SetResIcons(resId);
_class.lpszMenuName = MAKEINTRESOURCE(resId);
}
После того, как оконный класс зарегистрирован системой, Вы можете создать столько окон этого класса, сколько пожелаете. Они, конечно, совместно используют ту же самую оконную процедуру, которая была зарегистрирована классом. Как будет показано дальше, мы можем различать между собой разные экземпляры окна внутри этой процедуры.