Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по чистому WINapi [D7, NT4, Win2k, WinXP]


Страницы:   1 2

Xion ©   (2007-07-19 11:29:00) 

Доброе время суток.

у меня вопрос как отресовать caption на окне если я заменил WNDProc ?


DVM   (2007-07-19 17:02:00) [21]

Чет я не понял окно твое или чужое и зачем DefWindowProc вызывать всегда?


Xion   (2007-07-19 16:59:00) [22]

procedure TThreadWindow.WNDProc(var Message: TMessage);
var OldBrush:HBrush;
   OldPen:HPen;
   OldFont:HFont;
   OldBk:Integer;
   NeedDC:boolean;
begin
 case Message.Msg of
   WM_ERASEBKGND:
                 With TWMERASEBKGND(Message) do begin
                   NeedDC := DC = 0;
                   if NeedDC then
                     DC := GetWindowDC(fWND);
                   try
                     if fBrush <> 0 then
                       OldBrush := SelectObject(DC,fBrush)
                     else
                       OldBrush := SelectObject(DC,GetStockObject(NULL_BRUSH));
                     OldPen := SelectObject(DC,GetStockObject(BLACK_PEN));
                     OldFont := SelectObject(DC,fFont);
                     OldBk := GetBkMode(DC);
                     try
                       SetBkMode(DC,TRANSPARENT);
                       DrawWND(DC);
                     finally
                       SetBkMode(DC,OldBk);
                       SelectObject(DC,OldFont);
                       SelectObject(DC,OldPen);
                       SelectObject(DC,OldBrush);
                     end;
                   finally
                     if NeedDC then ReleaseDC(fWND,DC);
                   end;
                   exit;
   end;
 end;
 //CallWindowProc(pointer(fAdrPrevWNDProc),fWND,Message.Msg,Message.WParam,Message. LParam);
 DefWindowProc(fWND, Message.Msg, Message.WParam, Message.LParam);
 //Windows.SetWindowLong(fWnd,GWL_WNDPROC,Integer(fAdrPrevWNDProc));
end;


clickmaker   (2007-07-19 16:58:00) [23]


> [9] Xion ©   (19.07.07 16:54)

Дык это... DefWindowProc надо в конце вызывать. Или старую процедуру


DVM   (2007-07-19 16:57:00) [24]


> Xion ©   (19.07.07 16:54) [9]

Покажи свой WNDProc


Xion   (2007-07-19 16:54:00) [25]

дело втом что я заменил WNDProc (спомощу SetWindowLong) етого окна на свой после етого он перестал отрисововать Caption


DVM   (2007-07-19 16:48:00) [26]

Но может случиться и так, что шапка окна самопальная - картинка за которую можно таскать - тогда найти способ замены текста маловероятно.


DVM   (2007-07-19 16:46:00) [27]


> вобще какая метод отвечаеть за отресовку шапки окна

WM_NCPAINT + надо смотреть сообщения, начинающиеся на WM_NC....


DVM   (2007-07-19 16:45:00) [28]


> ето я пробывал но на панели задач оно меняется а на шапке
> окна нет.

А ты точно у того окна у кого надо менял? На панели задач может быть кнопка совсем от другого окна.


Xion   (2007-07-19 16:39:00) [29]

ето я пробывал но на панели задач оно меняется а на шапке окна нет. вобще какая метод отвечаеть за отресовку шапки окна (без VCL)


clickmaker   (2007-07-19 16:35:00) [30]

TextOut, DrawText


Strange man   (2007-07-19 16:32:00) [31]

SetWindowText?


Xion   (2007-07-19 16:19:00) [32]

надпись на заголовке окна


DVM   (2007-07-19 15:45:00) [33]

Что понимается под caption - весь заголовок окна или надпись на заголовке окна?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо