Вопрос № 23701: Здравствуйте! Я опять по вопросу субклассирования.
Во-первых: я хочу спросить, что же возвращает
CONTROL.PARENT.HWND? Манипулятор формы, но которую помещен, или контейнера?
Во-вторых: Я хочу стпросить вот что: когда я пишу контрол, ...Вопрос № 23706: Здравствуйте, уважаемые!
Есть такая проблема: хочу сделать авторан для CD, т.е. среду для разработки этого самого авторана. Проблема в том, что я не знаю, каким образом уже готовой прогой можно скомпилировать новую аппликуху, которая уже будет го...
Вопрос № 23.701
Здравствуйте! Я опять по вопросу субклассирования.
Во-первых: я хочу спросить, что же возвращает
CONTROL.PARENT.HWND? Манипулятор формы, но которую помещен, или контейнера?
Во-вторых: Я хочу стпросить вот что: когда я пишу контрол, то потом в программе может быть его несколько копий. Так ведь? Но для субклассирования я должен указать SetWindowLong (hWnd,GWL_WNDPROC, адресс_процедуры) Адресс можно указать только в основном модуле, а он находиться в память в единственном екземпляре.
И все копии контролов будут вызывать одну и ту же процедуру? Допустим у меня несколько котролов размещенных на нескольких окнах.
Предположим я хочу сделать процедуру, которая ограничивает минимальные размеры онка SETXYMIN (X, Y). Это нужно делать только с окном, на которую помещен контрол. Допустим, отключать субклассирование уже не нужно, после вызова этой процедуры оно должно действовать всегда, но для каждой формы, чтобы установить разные значение X, Y! Помогите, пожалуйста с этом разобраться.
Отправлен: 19.07.2005, 00:49
Вопрос задал: Igor Vlad. (статус: Посетитель)
Всего ответов отправлено: 1
Отвечает: Залетин Виталий Викторович
Здравствуйте, Igor Vlad.!
1. CONTROL.PARENT.HWND может означать и то и другое. У любого контрола есть свойство PARENT, указывающее на то, к чему принадлежит этот контрол, т. е. на чем лежит, его родителя. Для элемента UserControl это будет форма, на которой он расположен, а для всего, что на UserControl - будет UserControl.
2. Можно писать для каждой копии контрола отдельную функцию окна (процедуру)
Извращенно, но факт. Ежели она одна для всех, то вызывается она. Вы же в свойствах контрола укажите адрес процедуры.
3. Ограничивать размеры окна через сабклассинг - извращение (но это только мое мнение). Не легче ли написать, например, так:
Private Sub Form_Resize()
If Form.width<1000 Then
Form.width=1000
End if
If Form.height<1000 Then
Form.height=1000
End if
End sub
--------- Учиться никогда не поздно. Особенно программированию!
Здравствуйте, уважаемые!
Есть такая проблема: хочу сделать авторан для CD, т.е. среду для разработки этого самого авторана. Проблема в том, что я не знаю, каким образом уже готовой прогой можно скомпилировать новую аппликуху, которая уже будет готовым автораном. Я так понимаю, что надо к проге цеплять компилятор, т.е. всегда тащить его с собой, при этом еще и создавать исходные коды для нового приложения. Если есть какие-либо соображения и навыки, уделите пару минут для разъяснения!
С уважением, *Kot*
Отправлен: 19.07.2005, 08:52
Вопрос задал: *Kot* (статус: Студент)
Всего ответов отправлено: 2
Отвечает: _Виталий
Здравствуйте, *Kot*!
Навыков по вопросу не имею, но соображения свои напишу.
Ну в принципе да, тащить компилятор или проверять на машине(на которой создаётся авторан) установлен ли VB, и еспользовать его для создания нового приложения.
Еще, как вариант, можно сделать один autorun.exe и в нём создать обработчик файла-настройки. Т.е. Когда юзер создаст свой авторан в твоём "генераторе авторанов", он окончательно получает уже готовый autorun.exe и файл-настройки, который был сгенерирован. Конечно я не знаю какие требования и какие автораны ты хочешь создавать. Начальный пример файла-настройки:
Title="Моя крутая игрища"
Text="Закройте все проги и жми далее.."
NextBtn="Далее"
...
...
Т.е. когда запускается autorun.exe он читает строку из Title и ставит Me.Caption = title, затем общий текст Label1.Caption=Text, который загружен из строки Text. Кнопка принимает свойство Caption из строки NextBtn и т.д. Ну я думаю ты понял, что я имел ввиду :-)
Удачи!
Ответ отправил: _Виталий (статус: 4-ый класс)
Отправлен: 19.07.2005, 20:06
Отвечает: Залетин Виталий Викторович
Здравствуйте, *Kot*!
А чем Вам Бейсик не подходит? Пишите то, что должно появиться на экране при авторуне, потом впишите его запуск в файлик autorun.inf и все. Чего напрягаться лишний раз?
А разработка компилятора дело почти неблагодарное...
--------- Учиться никогда не поздно. Особенно программированию!
Ответ отправил: Залетин Виталий Викторович (статус: 3-ий класс)
Отправлен: 23.07.2005, 11:21 Оценка за ответ: 1 Комментарий оценки: Я делаю утилиту создания авторанов, а не просто авторан! Читайте внимательно!