Главная страница
    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.014 c
3-44552
chum
2003-06-19 12:45
2003.07.14
Какой инсталятор использовать.


1-44678
BOA_KAA
2003-06-30 13:31
2003.07.14
TDriveComboBox


1-44642
Tornado
2003-07-02 11:07
2003.07.14
работа с DLL, подскажите


14-44874
realswat
2003-06-27 14:32
2003.07.14
как уведичить используемые ресурсы?


14-44896
Dimich1978
2003-06-27 20:44
2003.07.14
ПОЗДРАВИМ SERGO





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский