Первый вопрос: разве я не закончу с АЛОТОМ классов, занимающихся этим?Особенно потому, что у класса есть только конструктор и деконструктор
Если вам не нравится количество классов, которое вам нужно создать для каждого другого типа объекта, вы можете создать один класс RAII, которыйпринимает параметр HGDIOBJ в конструкторе и вызывает DeleteObject в деструкторе.Этот класс затем может быть использован для всех различных объектов GDI.Например:
class GDIObject
{
public:
HGDIOBJ GdiObject;
GDIObject( HGDIOBJ object )
: GdiObject( object )
{
}
~GDIObject()
{
DeleteObject( GdiObject );
}
}
...
GDIObject font( CreateFont( 48, 0, 0, 0, FW_DONTCARE, false, true, false, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, VARIABLE_PITCH, TEXT("Impact") ) );
Второй вопрос: что если я вызываю класс CreateFont в WndProc, который постоянно выходит из области видимости.Так я должен делать все свои вызовы CreateFont или как LoadBitmap в WndMain?Я привык вызывать эти функции в WM_CREATE и очищать их в WM_DESTROY.
Для элементов, которые должны оставаться в памяти дольше, чем область действия функции, вам придется поместить их вглобальный уровень.