Форум: "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