Страниц: [1]
  Печать  
Автор Тема: Перерисовка в PhAB  (Прочитано 3500 раз)
B_A_S
Участник
*
Offline Offline

Сообщений: 13


Просмотр профиля
« : Мая 27, 2013, 01:52:02 pm »

Доброго времени суток!
Знакомлюсь с PhAB. Решил попробовать сделать динамический рисунок. Создал диалог, закинул на него PtRaw и назначил на перерисовку следующую ф-цию:
Код:
void drawMy( PtWidget_t *widget, PhTile_t *damage )
 {

PhRect_t     raw_canvas;
PhPoint_t    c1 = { 80 , 60 };
PhPoint_t    r   = { 72, 52 };

PtSuperClassDraw( PtBasic, widget, damage);
PtCalcCanvas(widget, &raw_canvas);

/* Установка области обрезки по холсту необработанного виджета. */
PtClipAdd ( widget, &raw_canvas);

/* Рисование эллипса. */
c1.x += raw_canvas.ul.x + Rep;
c1.y += raw_canvas.ul.y + Rep;

PgSetFillColor(Pg_YELLOW);
PgDrawEllipse ( &c1, &r, Pg_DRAW_FILL);


PtClipRemove ();

}

После этого создаю PtTimer и добавляю реакцию  активизации:
Код:
TimerEv( PtWidget_t *widget, ApInfo_t *apinfo, PtCallbackInfo_t *cbinfo )

{

/* eliminate 'unreferenced' warnings */
widget = widget, apinfo = apinfo, cbinfo = cbinfo;

Rep++;

PtFlush ();
return( Pt_CONTINUE );

}
Компилирую, запускаю. Эллипс рисуется, но при это не двигается, хотя если диалог завести за границу экрана, то эллипс изменит свои координаты.Значит таймер работает, но почему-то не отправляет сообщение о перерисовке. Пробовал вместо PtFlush - PtForceUpdate();PtUpdate();PtRelease();, тот же результат. В чем может быть проблема?
Записан
A_O
Full Member
***
Offline Offline

Сообщений: 212


Просмотр профиля
« Ответ #1 : Мая 27, 2013, 02:07:30 pm »

Добавьте в TimerEv вызов PtDamageWidget().
Записан
B_A_S
Участник
*
Offline Offline

Сообщений: 13


Просмотр профиля
« Ответ #2 : Мая 27, 2013, 02:49:45 pm »

Вот так заработало:
Код:
PtDamageWidget(ABW_PtRaw1);
Спасибо вам большое.  Smiley
Записан
Страниц: [1]
  Печать  
 
Перейти в: