Текущий архив: 2010.01.24;
Скачать: CL | DM;
Вниз
Положение рабочей части окна на экране Найти похожие ветки
← →
demon © (2008-11-23 21:51) [0]Как узнать положение рабочей части окна на экране?
GetWindowRect возвращает положение всего окна, с загаловком, а он бывает разной высоты...
← →
DVM © (2008-11-23 21:55) [1]GetClientRect
← →
demon © (2008-11-23 22:04) [2]GetClientRect вернет размеры рабочей части, но не её положение на экране.
← →
Anatoly Podgoretsky © (2008-11-23 22:14) [3]> demon (23.11.2008 22:04:02) [2]
Тебе что абсолютные координаты нужны, тогда ClientToScreen
← →
demon © (2008-11-23 22:22) [4]То что нужно, спасибо
← →
demon © (2008-11-23 22:45) [5]К сожалению ClientToScreen плохо работает с SetCapture/ReleaseCapture.
← →
DVM © (2008-11-23 22:51) [6]
> К сожалению ClientToScreen плохо работает с SetCapture/ReleaseCapture.
это как?
← →
demon © (2008-11-23 23:05) [7]Ну, когда ставлю SetCapture при нажатии клавиши мыши, то ClientToScreen возвращиет слишком большие координаты (по х больше нескольки тысяч), незнаю почему.
Но все исправил: вызываю ClientToScreen раньше чем SetCapture.
← →
DVM © (2008-11-23 23:11) [8]
> Ну, когда ставлю SetCapture при нажатии клавиши мыши, то
> ClientToScreen возвращиет слишком большие координаты (по
> х больше нескольки тысяч), незнаю почему.
покажи код
← →
demon © (2008-11-23 23:26) [9]http://njg.890m.com/listbox.rar
← →
demon © (2008-11-23 23:49) [10]Может еще подскажите как задать цвет фона у листбокса?...
← →
DVM © (2008-11-24 12:32) [11]
> Может еще подскажите как задать цвет фона у листбокса?..
> .
самый надежный и универсальный способ задать цвет фона для любых контролов это сделать обработчик WM_ERASEBKGND и заливать там нужным цветом.
По поводу кода, я по моему уже тебе говорил, что в оконной функции надо всегда возвращать результат обработки сообщения. Иначе возможны проблемы. WM_ERASEBKGND в том числе.
← →
clickmaker © (2008-11-24 14:03) [12]> как задать цвет фона у листбокса?
WM_CTLCOLORLISTBOX у формы
← →
demon © (2008-11-24 16:57) [13]Неполучаеть не через WM_CTLCOLORLISTBOX не через WM_ERASEBKGND.
Не через setbkcolor, не через заливку ректа, незнаю в чем тут загвоздка...
возвращать результат обработки сообщения
Result:=0; это грамотно?
← →
clickmaker © (2008-11-24 16:59) [14]> Неполучаеть не через WM_CTLCOLORLISTBOX
мда? а как пытаешься?
← →
DVM © (2008-11-24 17:10) [15]
> Result:=0; это грамотно?
где 0, где 1, где еще что-то, зависит от сообщения. Для того же WM_ERASEBKGND 1 возвращать надо.
← →
demon © (2008-11-24 18:38) [16]
WM_CTLCOLORLISTBOX:
begin
SetTextColor(wParam, RGB(255, 255, 255));
SetBkColor(wParam, RGB(0, 200, 0));
end;
← →
DVM © (2008-11-24 18:43) [17]
> demon © (24.11.08 18:38) [16]
сколько раз тебе повторять!!!!!!
Return Values
If an application processes this message, it must return the handle of a brush. Windows uses the brush to paint the background of the list box.
← →
demon © (2008-11-24 21:46) [18]А как это сделать? :-[
← →
DVM © (2008-11-24 22:42) [19]
> А как это сделать? :-[
а что непонятно то?
← →
demon © (2008-11-25 08:06) [20]сделал так result:= CreateSolidBrush($000000);
работает!
← →
clickmaker © (2008-11-25 11:21) [21]> [20] demon © (25.11.08 08:06)
> сделал так result:= CreateSolidBrush($000000);
лучше один раз создать кисть, сохранить хэндл и его возвращать
Result := FListBoxBrush;
а при завершении убить DeleteObject(FListBoxBrush);
а так будет утечка ресурсов GDI
← →
demon © (2008-11-25 23:08) [22]Но мне эта кисть будет нужна на протяжении всей работы программы, разве после завершения программы windows не очисти все незакрытые хэндлы?
В любом случае сделал по вашему, выглядит грамотнее.
← →
DVM © (2008-11-25 23:10) [23]
> разве после завершения программы windows не очисти все незакрытые
> хэндлы?
Очистит, очистит, но так делать все равно не надо. За собой мусор надо удалять ВСЕГДА.
Страницы: 1 вся ветка
Текущий архив: 2010.01.24;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.008 c