Текущий архив: 2005.09.25;
Скачать: CL | DM;
ВнизНесколько вопросов по WinAPI Найти похожие ветки
← →
i-s-v © (2005-08-03 03:32) [0]1. Как сделать, чтобы одной программой показывались и обрабатывались 2 окна, чтобы второе не находилось в клиентской области первого?
2. Создаю LISTBOX с LBS_OWNERDRAWFIXED. Как сделать, чтобы выбранный элемент подсвечивался?
WM_DRAWITEM:
begin
if wParam = id_listBox then
begin
with PDrawItemStruct(lParam)^ do
begin
if itemState = ODS_SELECTED then
begin
SetBKColor(hDC, RGB(0, 0, 128));
SetTextColor(hDC, $ffffff);
lbr.lbStyle := BS_SOLID;
lbr.lbColor := RGB(0, 0, 128);
br := CreateBrushIndirect(lbr);
FillRect(hDC, rcItem, br);
end else
begin
SetBKColor(hDC, $ffffff);
SetTextColor(hDC, $000000);
lbr.lbColor := $ffffff;
end;
TextOut(hDC, rcItem.Left+20, rcItem.Top+2, list.Item[itemId].Value.Name, Length(list.Item[itemId].Value.Name));
end;
end;
end;
не дает ничего хорошего
3. Есть ли в WinAPI такое понятие, как Alignment, или все изменения размеров нужно прописывать вручную?
Спасибо.
← →
Игорь Шевченко © (2005-08-03 10:15) [1]
> 1. Как сделать, чтобы одной программой показывались и обрабатывались
> 2 окна, чтобы второе не находилось в клиентской области
> первого?
Убрать стиль WS_CHILD из второго окна ? Я угадал ?
> if itemState = ODS_SELECTED
if (temState and ODS_SELECTED) <> 0
> Есть ли в WinAPI такое понятие, как Alignment, или все изменения
> размеров нужно прописывать вручную?
Вручную.
На будущее рекомендую - прежде чем задавать вопрос, посмотреть исходные тексты VCL - там все-все написано.
← →
alpet © (2005-08-03 11:22) [2]1. Как обычно, два не зависимых окна делаешь и все.
2. Можно увидеть, как ты его создаешь?
3. "Вручную". Вероятно удобнее всего при обработке WM_SIZING.
← →
i-s-v © (2005-08-03 15:28) [3]1. А как создавать второе окно?...
win1 := CreateWindowEx(0,
winClass.lpszClassName,
"111",
WS_OVERLAPPEDWINDOW OR WS_VISIBLE,
222, 195, 200, 300,
0, 0,
hInst,
nil);
win2 := CreateWindowEx(0,
winClass.lpszClassName,
"222",
WS_OVERLAPPEDWINDOW OR WS_VISIBLE,
222, 195, 200, 300,
win1, 0,
hInst,
nil);
lpClassName - создавать новый класс?
Можно примерчик, плз...
2.> if (temState and ODS_SELECTED) <> 0
Спасибо, помогло
3. Понятно..
← →
Игорь Шевченко © (2005-08-03 16:22) [4]
> 1. А как создавать второе окно?...
А я же не в курсе, что тебе нужно. Убрать Win1 из параметров CreateWindow(Ex) при создании второго окна.
← →
i-s-v © (2005-08-03 17:01) [5]Есть главное окно проги... Есть еще одно окно - настройки проги, которое вызывается при нажатии на кнопку...
>Убрать Win1
win2 стает мертвым
В строчки
while GetMessage(Msg, win1, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
случайно не нужно каким-то образом добавить обработку сообщений для win2?
← →
Игорь Шевченко © (2005-08-03 17:24) [6]
> while GetMessage(Msg, win1, 0, 0) do
while GetMessage (Msg, 0, 0, 0) do
← →
i-s-v © (2005-08-03 18:43) [7]Спасибо!
:)
Страницы: 1 вся ветка
Текущий архив: 2005.09.25;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.031 c