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

Вниз

hInstance   Найти похожие ветки 

 
Dmk ©   (2003-05-02 18:09) [0]

При создании окна с помощью CreateWindow используется
параметр hInstance. Что он означает?


 
vuk ©   (2003-05-02 18:22) [1]

Читаем Help:

hInstance

Identifies the instance of the module to be associated with the window.

Означает это, что hInstance идентифицирует экземпляр модуля(приложения или dll), с которым будет связано это окно.


 
Dmk ©   (2003-05-02 18:33) [2]

Если данное окно будет иметь стиль Child, то к чему
его привязывать? К Application.Handle? или к MainForm?


 
vuk ©   (2003-05-02 21:00) [3]

А при чем здесь hInstance?


 
Dmk ©   (2003-05-02 21:32) [4]

Вот и я не пойму при чем здесь hInstance :)
если в 0 ставишь, тоже работает.
Может есть где подробное объяснение.
В TCustomForm например создается свой экземпляр:
FClientInstance := Classes.MakeObjectInstance(ClientWndProc);
Я просто не понимаю связи hInstance и WindowProc.
И для чего это нужно??????


 
nikkie ©   (2003-05-02 23:22) [5]

>если в 0 ставишь, тоже работает.
hInstance
Windows 95/98: [in] Handle to the instance of the module to be associated with the window.
Windows NT/2000: This value is ignored.


 
Dmk ©   (2003-05-02 23:57) [6]

Все tnx разобрался :)
//Windows NT/2000: This value is ignored.
ничего подобного - не игнорируется.
Если 0, то окно будет под управлением Application


 
nikkie ©   (2003-05-03 01:26) [7]

>Все tnx разобрался :)
ну-ну.
>Если 0, то окно будет под управлением Application
можешь написать про это в microsoft


 
Dmk ©   (2003-05-03 02:18) [8]

Вместо того чтобы объяснить
вы господин Адрианов издеваетесь.
Может я неверно понял, так что ж с того?
Вы наверно сразу поняли когда разбирались с hInstance?
И к вашему сведению: мозги у всех по разному устроены.


 
Almaz ©   (2003-05-03 03:44) [9]


> Dmk © (02.05.03 21:32)
> Вот и я не пойму при чем здесь hInstance :)
> если в 0 ставишь, тоже работает.
> Может есть где подробное объяснение.
> В TCustomForm например создается свой экземпляр:
> FClientInstance := Classes.MakeObjectInstance(ClientWndProc);
> Я просто не понимаю связи hInstance и WindowProc.
> И для чего это нужно??????

Здается мне, у вас произошла некоторая путаница в понятиях :)
1. Параметр hInstance, передаваемый функции CreateWindow - это, как правильно сказал vuk, идентификатор экземпляра модуля, с которым ассоциируется окно (а еще точнее - адрес, куда этот модуль был загружен в виртуальном адресном пространстве процесса). НИКАКОГО отношения к WindowProc он НЕ ИМЕЕТ. В Win9x в качестве этого параметра необходимо передавать значение глобальной переменной hInstance. В Win2k/XP этот параметр и вовсе игнорируется.

2. Теперь о функции MakeObjectInstance - эта функция также не имеет НИКАКОГО отношения к hInstance, передаваемому CreateWindow. MakeObjectInstance существует из-за того, что в качестве оконной функции (WindowsProc) не может быть указан ни один метод какого либо класса (т.к. для любого метода класса первым параметром должен быть передан указатель Self и т.п.) Поэтому создатели VCL пошли на следующую хитрость - с помощью функции MakeObjectInstance для каждого объекта создается заглушка оконной функции, которая попросту передает управление соостветствующему методу данного класса, и в качестве оконной функции для создаваемого окна указывается именно она.


 
Dmk ©   (2003-05-03 04:03) [10]

2 Almaz © (03.05.03 03:44)
Я Вам очень благодарен. Спасибо.

PS. С 9 утра сижу. Уже мозги клинит. Всем спокойной ночи.



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

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

Наверх




Память: 0.49 MB
Время: 0.018 c
3-7303
first_aid
2003-06-06 10:01
2003.07.03
Не обновляется атоинкрементальное поле


3-7318
abc
2003-06-08 23:52
2003.07.03
как сделать так что бы при вводе данных в DBGrid первая буква...


1-7416
Yurique
2003-06-23 09:31
2003.07.03
Фокус ввода в TListBox


14-7593
Leo^Sun
2003-06-14 13:10
2003.07.03
Вывод на экран больших чисел


7-7736
LexusU
2003-04-23 12:33
2003.07.03
Как можно получить текст из окна?