Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Вопрос по работе с GDI+


Автор: Paspartu 9.8.2008, 03:54
Вопрос по работе с 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+?


Автор: DimaBy 8.2.2009, 12:58
а где format = new StringFormat ?

Автор: Andrey44 9.2.2009, 08:08
DimaBy
Цитата(DimaBy @  8.2.2009,  12:58 Найти цитируемый пост)
а где format = new StringFormat ? 

Что-то вы путаете. Он же не указатель объявляет.

Paspartu
Цитата(Paspartu @  9.8.2008,  03:54 Найти цитируемый пост)
Status SetAlignment(IN StringAlignment align)
{
    return SetStatus(DllExports::GdipSetStringFormatAlign(
    nativeFormat,
    align
    ));
}


nativeFormat - что за птица такая?
Когда вылетает этот параметр валидный?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)