Форум: "WinAPI";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c