Главная страница
    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.46 MB
Время: 0.036 c
14-1125687602
DiamondShark
2005-09-02 23:00
2005.09.25
Оборзели.


2-1123970686
ArtemESC
2005-08-14 02:04
2005.09.25
CopyFrom класса TStream


2-1124164683
КотаПёс
2005-08-16 07:58
2005.09.25
Запись текста в файл


2-1123677630
DimonNew
2005-08-10 16:40
2005.09.25
подстановочные поля


1-1125913990
Ed2
2005-09-05 13:53
2005.09.25
активность пользователя





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