SetParent и PictureBox в UserControl'e

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
anian
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 116
Зарегистрирован: 02.10.2002 (Ср) 12:05
Откуда: /dev/null

SetParent и PictureBox в UserControl'e

Сообщение anian » 22.12.2006 (Пт) 8:51

Есть UserControl, в нем пикчер pic
По клику на одной из нескольких областей контрола над ним должен появится пикчер, который до поры невидимый. Делаю так:
Код: Выделить всё

    lpStyle = GetWindowLong(pic.hwnd, GWL_EXSTYLE)
    SetWindowLong pic.hwnd, GWL_EXSTYLE, lpStyle Or WS_EX_TOOLWINDOW

        'отвязываем пикчер от контрола, привязываем к десктопу...
        но не нужно ли предварительно поставить ему WS_CHILDWINDOW?
    SetParent pic.hwnd, GetDesktopWindow()


Пикчер появляется, но при клике по нему вываливается IDE'шка, в откомпиленом виде работает
Трез-вы-ми мы не сда-дим-сииии!!! Ураааааа!!!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 22.12.2006 (Пт) 9:44

Что-то я не пойму - тебе нужен PictureBox на UserControl-ом (а для этого просто достаточно кинуть его на этот самый UserControl). Ты же пытаешься привязать его к десктопу... И нафига?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

anian
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 116
Зарегистрирован: 02.10.2002 (Ср) 12:05
Откуда: /dev/null

Сообщение anian » 22.12.2006 (Пт) 9:56

Andrey Fedorov писал(а):Что-то я не пойму - тебе нужен PictureBox на UserControl-ом (а для этого просто достаточно кинуть его на этот самый UserControl)


Дык а контрол жесткого размера, например 100*100, а пикчер больше.
А также пикчер может появится слева, справа и т.д...примерно как drop-down в комбо
Трез-вы-ми мы не сда-дим-сииии!!! Ураааааа!!!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 22.12.2006 (Пт) 10:01

anian писал(а):
Andrey Fedorov писал(а):Что-то я не пойму - тебе нужен PictureBox на UserControl-ом (а для этого просто достаточно кинуть его на этот самый UserControl)


Дык а контрол жесткого размера, например 100*100, а пикчер больше


Ну и что?

Делаешь на это время больше размеры самого UserControl-а (запоминая его старые для последующего восстановления) или по другому - просто выводишь поверх обычную форму. Смотря как тебе все надо.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

anian
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 116
Зарегистрирован: 02.10.2002 (Ср) 12:05
Откуда: /dev/null

Сообщение anian » 22.12.2006 (Пт) 10:40

Andrey Fedorov писал(а):Ну и что?

Делаешь на это время больше размеры самого UserControl-а (запоминая его старые для последующего восстановления) или по другому - просто выводишь поверх обычную форму. Смотря как тебе все надо.


Давайте обойдемся без теоретизирования. Проблему, на мой вгляд, я описал достаточно четко...контрол ЖЕСТКОГО размера, изменять его НЕЛЬЗЯ, форма мне тоже не нужна...да и пикчер-то не особо...но это на потом

Выглядеть должно примерно как ComboBox или DTPicker
Трез-вы-ми мы не сда-дим-сииии!!! Ураааааа!!!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.12.2006 (Пт) 10:44

Выводи форму, ставь WS_CHILDWINDOW.
Как потерю фокуса будешь ловить, придумал?
Lasciate ogni speranza, voi ch'entrate.

anian
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 116
Зарегистрирован: 02.10.2002 (Ср) 12:05
Откуда: /dev/null

Сообщение anian » 22.12.2006 (Пт) 10:49

А с пикчером никак, тока с формой? Видел пример с пикчером, да тока повторить не получается его...и потом, пикчер выводится, но IDE почему вываливается при клике по нему???

Как потерю фокуса ловить не придумал...сабклассинг спасет?
Трез-вы-ми мы не сда-дим-сииии!!! Ураааааа!!!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 22.12.2006 (Пт) 11:43

Можешь здесь посмотреть...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

anian
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 116
Зарегистрирован: 02.10.2002 (Ср) 12:05
Откуда: /dev/null

Сообщение anian » 25.12.2006 (Пн) 7:31

Писец...мне стыдно...толи в отпуск пора, толи спать больше надо...

Решил убрать для проверки дроп-даун пикчера, и просто отображать его по клику внутри контрола...а в контроле еще и текстбокс есть...

Дак вот, фокус изначально ставится на него, и при клике на контрол, он этот фокус теряет, генерирует событие Validate, которое обрабатывает содержимое текстбокса и генерирует Validate, но уже от имени контрола - и вот тут IDE'шка радостно вываливается...

Одинаковые имена? но объекты разные...не понимай...
Трез-вы-ми мы не сда-дим-сииии!!! Ураааааа!!!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot] и гости: 36

    TopList