Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Вниз

Несколько вопросов по 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.052 c
1-1125341627
kblc
2005-08-29 22:53
2005.09.25
Docking в Delphi 2005


14-1125902965
Андрей Жук
2005-09-05 10:49
2005.09.25
У меня украли номер ICQ


3-1123093260
Adolis
2005-08-03 22:21
2005.09.25
Password через ADO


14-1124939557
тихий вовочка
2005-08-25 07:12
2005.09.25
Вопросы производительности труда


4-1122815186
Borland
2005-07-31 17:06
2005.09.25
CD_ROM





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