Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.008 c
1-44726
Rawman
2003-07-01 10:37
2003.07.14
PopUp в TMemo


8-44768
Intell
2003-03-25 07:40
2003.07.14
Как Tmediaplayer`у определить, что он проигрывает?


14-44809
Александр из Минска
2003-06-28 16:04
2003.07.14
Интересное наблюдение (советую прочитать)


3-44555
rosl
2003-06-20 04:16
2003.07.14
SQL


3-44585
sergt
2003-06-19 13:14
2003.07.14
Переброска данных с таблицы Oracle в DBF





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский