Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Возвращаемся в первый класс: hInstance (вопрос глупый) 29.10.02 12:18
Автор: PS <PS> Статус: Elderman
|
Зачем системе нужен hInstance, если каждый процесс однозначно определяется с помощью PID ?
(Рихтера под рукой нет, так что извиняйте)
|
|
[Win32] Возвращаемся в первый класс: hInstance (вопрос глупый) 29.10.02 14:13
Автор: beetle <beetle> Статус: Member
|
истинное значение параметра hInstance - базовый адрес в памяти, определяющий ту область в адресном пространстве процесса, где находится образ данного EXE-файла
|
| |
Тогда для разных процессов hinst должен быть одинковый -> Next Question 29.10.02 15:16
Автор: PS <PS> Статус: Elderman
|
> истинное значение параметра hInstance - базовый адрес в > памяти, определяющий ту область в адресном пространстве > процесса, где находится образ данного EXE-файла
если это так, то параметр hInstance в GDI ф-иях абсолютно бесмысленен.
Например - зачем мне передавать hInstance в CreateWindow, если система и так знает и базовый адресс и pid и еще много того чего даже я не знаю ?
|
| | |
[Win32] нет не должен 30.10.02 13:06
Автор: beetle <beetle> Статус: Member
|
> > истинное значение параметра hInstance - базовый адрес > в > > памяти, определяющий ту область в адресном > пространстве > > процесса, где находится образ данного EXE-файла > > если это так, то параметр hInstance в GDI ф-иях абсолютно > бесмысленен. > Например - зачем мне передавать hInstance в CreateWindow, > если система и так знает и базовый адресс и pid и еще много > того чего даже я не знаю ? 1.ПРОЦЕСС ПО УМОЛЧАНИЮ ГРУЗИТСЯ по адресу 0х00400000
но при желании можно этот адрес изменить директивой компоновщика /BASE
или править заголовок и пересчитывать релоки
2/hInstanser для GDI функций служит для идентификации необходимого EXE-файла
3. hInstance
Windows 95/98: Handle to the instance of the module to be associated with the window. - можешь ассоциировать с каким угодно модулем, не обязательно со своим приложением, а с dll к примеру
Windows NT/2000: This value is ignored.
|
|
hInstance еще с win16 тянется. так и повелось 29.10.02 14:00
Автор: dl <Dmitry Leonov>
|
|
| |
Это мы помним: на самом деле пытаюсь подвести к следующему вопросу: 29.10.02 15:25
Автор: PS <PS> Статус: Elderman
|
что делает система с hInstance которые я ей передаю при вызове ф-ий ?
Ситуация получается смешная: система создает мой процесс и дает мне hInst (типа - бери и храни). После чего я говорю системе: создай мне окно и вот тебе hInst, в котором ты нуждаешся ;)
|
| | |
Это мы помним: на самом деле пытаюсь подвести к следующему вопросу: 29.10.02 17:01
Автор: dl <Dmitry Leonov>
|
> что делает система с hInstance которые я ей передаю при > вызове ф-ий ? > Ситуация получается смешная: система создает мой процесс и > дает мне hInst (типа - бери и храни). После чего я говорю > системе: создай мне окно и вот тебе hInst, в котором ты > нуждаешся ;)
Цитатка из MSDN (описание CreateWindow):
hInstance
Windows 95/98/Me: [in] Handle to the instance of the module to be associated with the window.
Windows NT/2000/XP: This value is ignored.
Так что это просто большой привет архитектуре '9x. Интересно было бы подсунуть сюда чужой hInstance - ежели он лежит в старших двух гигабайтах адресного пространства (на что похоже), то это запросто может и пройти.
|
|
|