Вопрос по работе с GDI+ есть класс (создается окно)… все работало прекрасно пока не решил добавить красивостей с помощью GDI+, когда создается одно окно то при его закрытии все хорошо но, если окон больше, то при закрытии любого из них вылетает:
Unhandled exception at 0x7c918fea in sbFrame.exe: 0xC0000005: Access violation writing location 0x00000010.
Код | //в файле gdiplusstringformat.h (это типа где вылет…) Status SetAlignment(IN StringAlignment align) { return SetStatus(DllExports::GdipSetStringFormatAlign( nativeFormat, align )); }
|
Код | //вот моя функция: VOID sbFrame::DrawCaptionString() { RECT rcWnd; GetWindowRect(this->hWnd_Frame,&rcWnd);
Graphics Gr(*this->DB.GetMemDC_Pointer()); FontFamily fontFamily(L"MS Reference Sans Serif"); Font font(&fontFamily, 13, 0 , UnitPixel);
StringFormat format; format.SetAlignment(StringAlignmentNear); format.SetTrimming(StringTrimmingEllipsisCharacter); format.SetFormatFlags(StringFormatFlagsNoWrap);
//….
SolidBrush StrBrush(Color(255, 255, 255)); Gr.DrawString(this->lpCaption, - 1, &font, rcString, &format, &StrBrush);
}
|
Она вызывается в при WM_NCCALCSIZE, WM_NCACTIVATE, WM_ACTIVATEAPP, короче когда надо перерисовать заголовок окна (изменение размеров окна, активация/деактивация)… Если закоментировать строки связаные с StringFormat то все хорошо, в чем проблема, как и года уничтожаются объекты GDI+?
|