Исчезает графическое отображение кнопки!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Исчезает графическое отображение кнопки!

Сообщение Rojohn » 05.08.2007 (Вс) 9:29

Уважаемые эксперты! Бывало ли у вас такое, чтобы после Unload формы и повторной её загрузки кнопка на ней теряла свой графический вид? Т.е. кнопки не видно, но подсказка по ней выдаётся и нажатие обрабатывается. Прямо беда и не знаю, как с этим бороться. Никаких программных Visible=False для кнопки не делалось! Единственное, что форма выгружается из другой формы по сле анализа данных, посылаемых по кнопке. Причём исчезает только та кнопка, на которую было нажатие перед выгрузкой формы, а всё остальное остается видимым.
Спасибо!
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 07.08.2007 (Вт) 22:11

Хм...

А когда нажатие отрабатывается, кнопка не появляется?
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 07.08.2007 (Вт) 22:32

Даже незнаю.. Может Refresh поможет?
И вообще она кагда-нибудь после исчезновения появляется?
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.08.2007 (Вт) 22:34

zHackLeX
Либо смени e-mail в профиле на валидный, либо (если он валидный) настрой фильры так, чтобы письма с форума не блокировались, либо отпишись от уведомлений.

This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

zhacklex@mail.ru
User not found: <zhacklex@mail.ru>
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

?

Сообщение Rojohn » 07.08.2007 (Вт) 22:51

У меня всё валидное и фильтров нет никаких. Не знаю где глюк. Может в касперском секьюрити сюит что закрыто, скажите, что открыть...

Появляется опять кнопка только после перезапуска всей программы.
Ни refresh, ни visible=true не помогают. Дело в том, что я выгружаю форму из другой формы в момент выполнения клика на этой кнопке и клик не завершается. Но, вроде как байсик должен сам всё нормально завершать при выгрузке формы.
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.08.2007 (Вт) 22:59

Rojohn
У меня к тебе никаких претензий не было. Претензии к zHackLeX.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

...

Сообщение Rojohn » 07.08.2007 (Вт) 22:59

Очень прикольно, но я нашел способ. Короче, она не исчезает, если поставить стиль не графический, а обычный. Странно очень...
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.08.2007 (Вт) 23:01

Стандартную отрисовывает система, графическую - сама кнопка.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 07.08.2007 (Вт) 23:04

Ну тогда можно попробовать найти какую-нить API'шку перерисовывающую указанный объект.. Может SendMessage, талько параметры какие не заню.. Я вообще API маловато знаю.
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

?

Сообщение Rojohn » 07.08.2007 (Вт) 23:04

Дык API я тоже тока учусь пока...

И что это значит в данном контексте? Что при выгрузке формы эта функция кнопки сбивается навсегда до перезагрузки программы? Странно. Наверное глюк VB...
Ну постараюсь пока ограничиться стандартным цветом кнопки (неохота писать из-за неё API и ещё не факт, что это поможет).
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 07.08.2007 (Вт) 23:10

Я у себя попробовал: в одной форме сделал кнопку, при нажатии выполняется процедура в другой форме (выгружает первую формы). На второй форме кнопка, снова загружающая первую форму..
У меня все работает нормально.
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Сообщение Rojohn » 07.08.2007 (Вт) 23:15

Незнаю... у меня там наворочено просто всего. У меня по нажатию кнопки идёт запись в LPT порт и ещё целая процедура работы с LPT битами в другой форме, а в течение этого времени ещё идёт фоновый процесс, который перезапускается по ошибке этой процедуры записи с выгрузкой двух форм, в т.ч. и формы с кнопкой.

А ты стиль кнопки ставил графический?
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.08.2007 (Вт) 23:28

Ну тогда можно попробовать найти какую-нить API'шку перерисовывающую указанный объект..


Перерисовкой окна занимается WindowProc класса этого окна. А не какая-то там апишка.

Тем не менее, можно заставить окно перерисоваться, послав ему WM_PAINT.

Я вообще API маловато знаю.

Не следует восприниматься WinAPI как какую-то отдельную экстра-сложную технологию.

Незнаю... у меня там наворочено просто всего. У меня по нажатию кнопки идёт запись в LPT порт и ещё целая процедура работы с LPT битами в другой форме, а в течение этого времени ещё идёт фоновый процесс, который перезапускается по ошибке этой процедуры записи с выгрузкой двух форм, в т.ч. и формы с кнопкой.


Возможна ситуация, что ты что-то куда-то не туда пишешь, и при этом тебе настолько повезло, что получешь не GPF, а непредсказуемое поведение.

Я вот недавно забыл emms поставить, так у меня VB ругался на Too complex expression (что не удивительно), а заголовок среды становился чёрным.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

...

Сообщение Rojohn » 07.08.2007 (Вт) 23:42

Я вот недавно забыл emms поставить, так у меня VB ругался на Too complex expression (что не удивительно), а заголовок среды становился чёрным.


Хакер, не ругайся так :) я стакими терминами ещё не работал...

Возможна ситуация, что ты что-то куда-то не туда пишешь, и при этом тебе настолько повезло, что получешь не GPF, а непредсказуемое поведение.


Чего там можно не туда писать? Я пишу только на LPT побитно и читаю оттуда же, сверяя и разбирая полученное. Ещё формирую TreeView в циклическом фоновом процессе (DoEvents). Никаких API практически не использую, только обращения к драйверу LPT (DLPortIO). Спасибо за ваши версии, пересмотрю проект - может чего найду глючного...

Кстати, Хакер, что такое GPF? General Protection Fault? :)
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.08.2007 (Вт) 23:43

Кстати, Хакер, что такое GPF? General Protection Fault?


Да. Проявляется в выбрасывании исключения с кодом STATUS_ACCESS_VIOLATION ( &hc0000005 )
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

...

Сообщение Rojohn » 07.08.2007 (Вт) 23:51

Спасибки за просвящение, но у меня вроде ошибок никаких не выскакивает. Ошибки я генерю сам при определенных данных на LPT (просто пишу сообщение и перезапускаю фоновый процесс).
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 08.08.2007 (Ср) 0:02

Хакер писал(а):Тем не менее, можно заставить окно перерисоваться, послав ему WM_PAINT.

Ага, передав DC для отрисовки в wParam? ;-)

Чтобы попросить окно перерисоваться, вызывают UpdateWindow.

А слать WM_PAINT вручную не положено вообще ни в каких случаях.
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 08.08.2007 (Ср) 0:08

UpdateWindow немного подумает, и сделает то же самое - пошлёт WM_PAINT. Если конечно не додумается до того, что слать его не нужно (а додумается она до этого, если окно закрыто другими окнами).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 08.08.2007 (Ср) 0:10

Хакер писал(а):UpdateWindow немного подумает, и сделает то же самое - пошлёт WM_PAINT. Если конечно не додумается до того, что слать его не нужно (а додумается если окно закрыто другими окнами).

UpdateWindow сделает, чтобы по вызову BeginPaint обработчик получил правильный DC.
Ты так сделать не сможешь.
Изображение

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

...

Сообщение Rojohn » 08.08.2007 (Ср) 8:31

Хоть бы кто-нибудь из вас написал, как оформить эти вызовы из программы :wink:
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 08.08.2007 (Ср) 10:15

2Хакер
Претензии справедливы.
Вроде бы настроил.

2Rojohn
Как оформить вызов UpdateWindow?

Public Declare Function UpdateWindow Lib "user32" Alias "UpdateWindow" (ByVal hwnd As Long) As Long
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 08.08.2007 (Ср) 17:26

Хакер писал(а):Не следует восприниматься WinAPI как какую-то отдельную экстра-сложную технологию.


Я и не воспринимаю как экстра сложную технологию, а просто знаю только некоторые из них (те, которые использовал наиболее часто).
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 08.08.2007 (Ср) 17:29

zHackLeX
Нет, изменений не произошло.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 09.08.2007 (Чт) 11:09

Ну, с апишкой-то понятно?


2Хакер
Оффтоп, за что дико извиняюсь...
Сам не мону понять, в чём дело...
Поставил в whitelist адреса egor.malyshev@gmail.com и vbs@aic.ru...
и отдельно фильтры на эти адреса чтоб не терялась почта...
Приношу извинения... если ничего не изменится... тогда отпишусь
от уведомлений.
За оффтоп еще раз извиняюсь.
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 09.08.2007 (Чт) 11:14

Оффтоп, за что дико извиняюсь...
Сам не мону понять, в чём дело...
Поставил в whitelist адреса egor.malyshev@gmail.com и vbs@aic.ru...
и отдельно фильтры на эти адреса чтоб не терялась почта...


sls_hacker@mail.ru

С него шлются письма...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 09.08.2007 (Чт) 11:35

Сначала выбираем такой аккаунт для отправки почты, а потом пристаем к людЯм - а чего эт почта не доходит.
подписи нет и не будет

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 09.08.2007 (Чт) 11:38

inq
Другого нет.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


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

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

Сейчас этот форум просматривают: Google-бот и гости: 85

    TopList