Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2013, 11:32   #41
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
А у Вас программа нормально отрабатывает?
Разумеется. Я бы не стал постить непроверенный код. Можете конечно воспользоватся примером по ссылке, по сути тоже самое. Разница в том, что у меня не используются переменные в глобальной видимости, а адрес предыдущей процедуры заносится в "проперть хендла" окна. А в том примере, в глобальную переменную. Хреновый стиль.
/ GetProp, SetProp/ функции доступа к property (вольный перевод - причиндалы) конкретного окна. То есть с хендлом окна можно сопоставить некое значение и писать туда что угодно, хоть телефон бабушки. Я заношу туда адрес родной процедуры окна, чтобы впоследствии считать его и вызвать в CallWindowProc.
EUGY вне форума Ответить с цитированием
Старый 21.01.2013, 11:44   #42
fyedor
Пользователь
 
Регистрация: 11.12.2012
Сообщений: 71
По умолчанию

Все понятно

Можете прикрепить свой файл Access? Я создал новый проект, все равно не работает..
fyedor вне форума Ответить с цитированием
Старый 21.01.2013, 12:03   #43
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Тлб не забудьте подключить.

ЗЫ.
Чую, не потянете пока сабклассинг.
Предлагаю кардинально другое решение.
Создать окно /CreateWindow/, и сделать его дочерним для формы/SetParent/. Задать ему нужный фон и прозрачность /SetLayeredWindowAttributes/ и обрезать в виде сектора.
Вложения
Тип файла: zip zipp.zip (166.1 Кб, 14 просмотров)

Последний раз редактировалось EUGY; 21.01.2013 в 12:11.
EUGY вне форума Ответить с цитированием
Старый 23.01.2013, 07:57   #44
fyedor
Пользователь
 
Регистрация: 11.12.2012
Сообщений: 71
По умолчанию

Запустил Ваше приложение - у меня так же все зависло Библиотеку не забыл подключить...

Цитата:
Сообщение от EUGY Посмотреть сообщение
Создать окно /CreateWindow/, и сделать его дочерним для формы/SetParent/. Задать ему нужный фон и прозрачность /SetLayeredWindowAttributes/ и обрезать в виде сектора.
Буду пробовать этот вариант
fyedor вне форума Ответить с цитированием
Старый 23.01.2013, 08:20   #45
fyedor
Пользователь
 
Регистрация: 11.12.2012
Сообщений: 71
По умолчанию

Цитата:
Сообщение от EUGY Посмотреть сообщение
Создать окно /CreateWindow/, и сделать его дочерним для формы/SetParent/. Задать ему нужный фон и прозрачность /SetLayeredWindowAttributes/ и обрезать в виде сектора.
Можете вновь код привести в пример? А то вновь натворю делов.
fyedor вне форума Ответить с цитированием
Старый 23.01.2013, 10:07   #46
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

При сабклассинге зависает акцесс, если был открыт редактор vba.
Здесь главное, чтобы в пользовательском режиме работало. Скомпилируйте, закройте полностью акцесс и откройте заново.
EUGY вне форума Ответить с цитированием
Старый 23.01.2013, 10:36   #47
fyedor
Пользователь
 
Регистрация: 11.12.2012
Сообщений: 71
По умолчанию

Цитата:
Сообщение от EUGY Посмотреть сообщение
При сабклассинге зависает акцесс, если был открыт редактор vba.
Здесь главное, чтобы в пользовательском режиме работало. Скомпилируйте, закройте полностью акцесс и откройте заново.
Действительно, работает. Спасибо!

Был бы очень благодарен, если бы объяснили свое второе кординальное решение Запутался на создании окна даже...
fyedor вне форума Ответить с цитированием
Старый 23.01.2013, 11:57   #48
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
второе кординальное решение

Хотел было написать, но не учел, что в любом случае нужно обрабатывать скроллы окна. А у форм акцесс нет события OnScroll. А значит, в этом случае опять придется отлавливать WM_VSCROLL/WM_HSCROLL в оконной процедуре.
Так что, без сабклассинга решения не вижу. (:
EUGY вне форума Ответить с цитированием
Старый 24.01.2013, 07:53   #49
fyedor
Пользователь
 
Регистрация: 11.12.2012
Сообщений: 71
По умолчанию

Цитата:
Сообщение от EUGY Посмотреть сообщение
Так что, без сабклассинга решения не вижу. (:
Ну значит будем с помощью его все решать.

Я так понимаю WM_VSCROLL/WM_HSCROLL надо отлавливать, чтобы координаты смещать при прокрутке?
fyedor вне форума Ответить с цитированием
Старый 24.01.2013, 08:21   #50
fyedor
Пользователь
 
Регистрация: 11.12.2012
Сообщений: 71
По умолчанию

Цитата:
Сообщение от EUGY Посмотреть сообщение
придется отлавливать WM_VSCROLL/WM_HSCROLL в оконной процедуре.
Пробую их отлавливать - не отлавливаются..странно..

Кстати, про идентификатор окна. Я его вот так определяю:

Код:
hwnd = FindWindowExA(Me.hwnd, FindWindowExA(Me.hwnd, 0, "OFormSub", ""), "OFormSub", "")
Может я лишь часть окна беру?? В которой как раз нет полосы прокрутки?

Все, разобрался с этой проблемой. Для работы с сообщениями WM_VSCROLL/WM_HSCROLL в качестве индентификатора исполльзую Me.hwnd.

Последний раз редактировалось fyedor; 24.01.2013 в 10:58.
fyedor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WinApi рисование в VBA Desha Помощь студентам 5 05.12.2012 12:32
Прозрачность в ie WennY HTML и CSS 1 26.08.2012 17:13
Различие кода mfc и WinApi(mfc ручками набили, а WinApi автоматически с генерировался!! нужно явное отличие, не могу найти) Артём1991 Помощь студентам 0 25.03.2012 17:13
Прозрачность digital-stream Общие вопросы Delphi 1 14.11.2011 21:03
Ошибка с SetLength применительно в PChar Celestia Общие вопросы Delphi 7 09.04.2011 06:42