Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.14;
Скачать: CL | DM;

Вниз

Не очищается окно при вводе текста   Найти похожие ветки 

 
Aleksandr ©   (2003-05-13 15:43) [0]

У меня в апишном окошке выводится текст (довольно быстро меняющийся). Вывод его осуществляется следующим образом:

function WindowProc(wnd:HWND; Msg : Integer; Wparam:Wparam; Lparam:Lparam) : Lresult; stdcall;
var
R : TRect;
DC : HDC;
rgn : HRGN;
begin
case msg of
wm_SetUserText : begin
Result:=0;
R.Left:=0;
R.Top:=10;
R.Right:=300;
R.Bottom:=70;
DC:=GetDC(WaitFormHandle);
rgn:=CreateRoundRectRgn(0,0,300,70,15,15);
SetWindowRgn(WaitFormHandle,rgn,true);
FillRgn(DC,rgn,COLOR_BTNText+1);
FrameRgn(DC,rgn,COLOR_BTNTEXT+1,300,70);
DrawText(DC,PChar(WParam),Length(String(WParam)),R,dt_Center+dt_VCenter)
end;

То есть при вводе новой надписи остаются следы предыдущей. Вроде делаю заполнение фоном... Что тут не так?


 
Aleksandr ©   (2003-05-13 15:46) [1]

Кстати, прямоугольник заполняю вручную, потому что при заполнении его таким вот образом:
GetRgnBox(Rgn,R)
текст вообще непонятно куда рисовался (а бывало, и не рисовался).


 
MBo ©   (2003-05-13 15:54) [2]

после SetWindowRgn строки, работающие с регионом, срабатывают???


 
Aleksandr ©   (2003-05-13 16:05) [3]

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


 
MBo ©   (2003-05-13 16:08) [4]

подозреваю, что эти строки:
FillRgn(DC,rgn,COLOR_BTNText+1);
FrameRgn(DC,rgn,COLOR_BTNTEXT+1,300,70);

не срабатывают из за недействительности региона - прочитай примечание в хелпе по SetWindowRgn


 
clickmaker ©   (2003-05-13 16:10) [5]

SetBkColor(DC, COLOR_BTNText);
DrawText(...


 
Aleksandr ©   (2003-05-13 16:11) [6]

Ну, возвращают они true. А описания по SetWindowRgn у меня ни в одном хелпе нет :(


 
Aleksandr ©   (2003-05-13 16:25) [7]

Попробовал
SetBkColor(DC, COLOR_BTNText);
Рисует просто черный прямоугольник по размеру текста :(


 
MBo ©   (2003-05-13 16:28) [8]

другой цвет подложи, например, COLOR_btnface


 
clickmaker ©   (2003-05-13 16:30) [9]

> Aleksandr © (13.05.03 16:11)
Ну, возвращают они true. А описания по SetWindowRgn у меня ни в одном хелпе нет :(

Да ты чё! В win32 SDK reference нет?

Вот здесь точно есть: http://www.msdn.microsoft.com/library/default.asp

А может всет-ки весь этот код выложить в WM_PAINT, а в ответ на WM_SetUserText говорить RedrawWindow ?


 
Aleksandr ©   (2003-05-13 16:41) [10]

Знаете, я так и начал сперва. Но она почему-то заклинилась - что-то из того кода автоматом вызывает WM_Paint...


 
clickmaker ©   (2003-05-13 17:02) [11]

что-то из того кода автоматом вызывает WM_Paint...

SetWindowRgn(WaitFormHandle,rgn, true);

Может сменить на false, а то похоже это флажок вызывает перерисовку окна после применения региона


 
Aleksandr ©   (2003-05-13 17:06) [12]

Кстати, SetBkColor тоже не помогает... До него истчо как-то зачищалась, а с ним вообще все накладывается :(


 
Aleksandr ©   (2003-05-13 17:23) [13]

установка в false тоже не дает эффекта.


 
Aleksandr ©   (2003-05-13 17:31) [14]

Гм... вообще круто. Сделал вместо SendMessage PostMessage этому окну, несколько секунд она рисовала все красиво и качественно... После чего выдала длинный ряд эксепшнов и отвалила....



Страницы: 1 вся ветка

Текущий архив: 2003.07.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
1-44653
Маришка
2003-07-02 12:53
2003.07.14
Нестыковка Дельфи 5 и Дельфи 7


14-44818
Слесарь Матерящийся
2003-06-26 10:35
2003.07.14
Windows - озвучка событий, mp3


14-44891
Knight
2003-06-25 20:26
2003.07.14
Преобразователь имен...


3-44572
Vlad2
2003-06-20 11:51
2003.07.14
Указатель на буфер записи базы данных после SetKey?


6-44779
Igor__
2003-05-07 22:20
2003.07.14
idHTTP