Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

Как создать дочерний контрол, зная только HWND радителя   Найти похожие ветки 

 
bigcrush   (2004-04-26 14:55) [0]

Собственно, сабж.


 
SPeller ©   (2004-04-26 16:06) [1]

Создать с nil-родителем, а потом SetParent.


 
Gandalf ©   (2004-04-26 21:15) [2]

Толкьо там не все хорошо будет с обработкой сообщений насколько я помню. Все таки KOL любит работать с родным.


 
SPeller ©   (2004-04-27 03:00) [3]

Ну,... тогда через задницу:
Создаём тип объекта, например такой

TCControl = object( TControl )
end;


Затем в процедуре, например, так:

var
  tm: TCControl;
begin
  New( tm, Create );
  tm.fHandle := ParentWnd;
  tm.fStyle := GetWindowLong( ParentWnd, GWL_STYLE );
  tm.fExStyle := GetWindowLong( ParentWnd, GWL_EXSTYLE );
  tm.fEnabled := True;
  tm.fVisible := True;
  tm.fIsForm := True;
  tm.fIsControl := False;

  NewfrmMain( Frm, tm );
  ...


 
bigcrush   (2004-04-27 12:40) [4]

> SPeller ©   (27.04.04 03:00) [3]
Может быть я не то сделал, но не получается. Так не верно?:
tm.fHandle:=Form.GetWindowHandle;
...
NewEdit(tm, []);

Суть в следующем:

Прога на C++. В ней подключается библиотека с KOL формой, которой можно передать только HWND окна где нужно расположить Edit-ы, Label-ы, и т.д.
Мне и нужно создать, скажем, Edit в окне, у которого известно только HWND


 
SPeller ©   (2004-04-27 13:02) [5]

Зачем вот это tm.fHandle:=Form.GetWindowHandle?? В моём примере переменная ParentWnd и есть тот самый хендл окна, на котором размещается всё остальное. Просто в моём случае я на переданном окне создаю ещё одно окно (мою форму). Тебе же достаточно вместо NewForm в моём случае вставить свой NewEditbox.


 
bigcrush   (2004-04-28 15:03) [6]

tm.fHandle:=Form.GetWindowHandle - я для примера взял форму в качестве окна HWND. Это и есть ParenWnd.

Я вот так сделал:

procedure TForm1.KOLForm1FormCreate(Sender: PObj);
var q:PControl;
begin
New( tm, Create );
 tm.fHandle := Form.GetWindowHandle;
 tm.fStyle := GetWindowLong( Form.GetWindowHandle, GWL_STYLE );
 tm.fExStyle := GetWindowLong( Form.GetWindowHandle, GWL_EXSTYLE );
 tm.fEnabled := True;
 tm.fVisible := True;
 tm.fIsForm := True;
 tm.fIsControl := False;

 q:=NewEditbox(tm, []);
 q.SetPosition(0, 0);
 q.SetSize(100,100);
 q.Enabled:=true;
 q.Visible:=true;


Но на форме не появляется новый Edit. Я вместо Form пробывал взять Panel - результат тот же.


 
SPeller ©   (2004-04-28 15:28) [7]

Попробуй сделать ему Show.


 
bigcrush   (2004-04-29 15:21) [8]

Сработало, спасибо.



Страницы: 1 вся ветка

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.034 c
14-1100022933
SniZ
2004-11-09 20:55
2004.11.28
Пример работы с ed2k


1-1100594952
hgd
2004-11-16 11:49
2004.11.28
Подскажите компонент или как?


9-1091020273
Evgeniy_K
2004-07-28 17:11
2004.11.28
Конвертирование цветов


1-1100240876
LEXX_55
2004-11-12 09:27
2004.11.28
Нужна помощь. TTabControl и TPageControl


4-1097760226
Дядя
2004-10-14 17:23
2004.11.28
Срочно - надо заблокировать клаву и мышь, Но





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