-
BuGaGa (07.01.17 22:15) [0]Приветствую.
Пытаюсь сделать "панель" (пытался делать через Static, затем через заполнение TWndClassEx и создание на его основе окно с присвоением своей WndProc.),
на которой можно будет разместить окна, "владельцем" которых будет "панель", и в ее WndProc будет обрабатываться сообщения от дочерних окон.
Через TWndClassEx как вы работает.
Проверил WM_CREATE где создается кнопка стиля BS_AUTOCHECKBOX,
WM_COMMAND === где обрабат. нажатие на кнопку, работает
WM_SIZE === где перемещаю кнопку. работает.
WM_CTLCOLORBTN не приходит/
WM_CTLCOLORSTATIC: не хочет работать.
и Delphi ругается [DCC Hint] Value assigned to 'StaticWinProc' never used в этом сообщение, хотя оно и проходит.
проверил
iu : integer;
WM_CTLCOLORSTATIC:
begin
if LPar = Longint(stt) then
begin
SetTextColor(WPar, 255);
SetBkColor(WPar, 8421504);
Result:= GetStockObject(GRAY_BRUSH);
end;
if LPar = Longint(CBT) then
Result:= GetStockObject(GRAY_BRUSH);
inc(iu);
SetWindowText(Form, IntToStr(iu));
end;
Надеюсь поймете вопрос ----- Как правильно сделать чтот-то похожее на Tpanel ?
Хотя бы в теории.
Спасибо.
Если нужно, Выложу весь код. -
Rouse_ © (08.01.17 05:18) [1]Давай уж весь код целиком архивом, так проще будет
-
BuGaGa (08.01.17 15:08) [2]Rouse_ === https://yadi.sk/d/aCzmunJ737kvVH
Шибко не ругаетесь. -
Rouse_ © (08.01.17 17:07) [3]Угу, скачал мельком глянул, что-то похожее в качестве примера у меня кажется было на рабочей машине, завтра постараюсь отписаться (ну если не ругать за код, как просил :)
-
BuGaGa (08.01.17 17:14) [4]
> Rouse_
Спасибо большое. Будемс ждать. -
Rouse_ © (09.01.17 11:24) [5]Лови, слегка причесал, но код страшный:
https://dl.dropboxusercontent.com/u/70911765/FormUnit.zip
К примеру:WM_CTLCOLORSTATIC:
begin
if LPar = Longint(stt) then
Это вообще никогда не заработает, у тебя же stt - локальная переменная, которая после обработки WM_CREATE выходит за область видимости и по приходу WM_CTLCOLORSTATIC будет содержать в себе все что угодно, кроме того что надо.
Я бы это все сел и переписал с нуля вдумчиво. -
ЯЧтсия (09.01.17 14:48) [6]Удалено модератором
-
ЯЧтсия (09.01.17 15:03) [7]Удалено модератором
-
BuGaGa (09.01.17 19:40) [8]
> Rouse_
Спасибо.
WM_CTLCOLORSTATIC:
Убрал Result := DefWindowProc(Wnd, Msg, WPar, LPar);, т.к. считаю что DefWindowProc здесь не требуется.
Вот если придется обрабатывать WM_SYSCOMMAND, то тут необходим.
"что-то похожее в качестве примера у меня кажется было на рабочей машине" ==== не нашлось?
И вообще, стоит ли так делать как я? Или есть лругой способ? -
Rouse_ © (10.01.17 10:03) [9]
> Убрал Result
Зря, читай справку по WM_CTLCOLORSTATIC
> не нашлось?
Ну там чуть другая задача была: http://forum.sources.ru/index.php?showtopic=194622
> И вообще, стоит ли так делать как я? Или есть лругой способ?
Возьми KOL и на нем напиши, раз тебе малый обьем нужен, либо найди примеры нормальный приложений реализованных с использованием только WinAPI и от них пляши. -
BuGaGa (10.01.17 21:22) [10]Rouse_
Век живи, век учись.
Укажите мне на мои ошибки.(Вроде-бы по msdn делаю)