powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / WindowProc в фоксе
9 сообщений из 9, страница 1 из 1
WindowProc в фоксе
    #32350821
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как обрабатывать событие Change для EditBox'а созданого с помощью API:

CreateWindowEx (lnStyleX, "EDIT",;
"Text", lnStyle,;
lnX, lnY, lnWidth, lnHeight,;
hForm, lnId, hApp, 0)
...
Рейтинг: 0 / 0
WindowProc в фоксе
    #32350842
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Серьезно...Много проблем с этим. Надо писать FLL.
...
Рейтинг: 0 / 0
WindowProc в фоксе
    #32350844
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше нарисуй ActiveX на Васике или С++. Меньше будет геморроя...
...
Рейтинг: 0 / 0
WindowProc в фоксе
    #32350871
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже рисовал. Но он (ocx) нормально не работает(не перерисовывается).
Приходится заставлять фокс рисовать. Мне нужен edit со свойством AutoSize.
Это не сложно сделать для эдита винды (в том же VB) используя SendMessage куда нужно передать HWND и сообщение EM_GETLINECOUNT. А у нас в фоксе проблема с HWND ...
...
Рейтинг: 0 / 0
WindowProc в фоксе
    #32350902
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На фоксе это все геморройно...Сам не пробовал. Привожу выдержку из ФИДО

Fri Oct 24 2003 09:07, German Zinov'evich wrote to Alexander Korolev:

GZe> Hу, что-ж, по-порядку...
GZe> за точную транскрипцию не отвечаю, главное смысл
GZe> 1). myDC=GetDC(myform.hwnd) && все понятно
GZe> 2). hfont=CreateFont( типа параметры для вертикального вывода текста,
GZe> четвертый параметр -0) && настройка фонта
GZe> 3). = DeleteObject (SelectObject (myDC, hFont)) && сцепляем фонт и DC
Вот здесь лучше
hOldFont = SelectObject (myDC, hFont)

GZe> 4). =SetTextColor( параметры)
GZe> 5). =SetBkMode( параметры) && .. ну нравятся мне красивые прозрачные
GZe> картинки.. :)
GZe> 6). =TextOut( параметры) && все выводится как надо, но текст залезает на
GZe> закладки управления страницами (pageframe)


Hе забыть
SelectObject (myDC, hOldFont)
DeleteObject (hFont)
ReleaseDC(...)

GZe> третий вариант:
GZe> ....
GZe> ....
GZe> =GetRgnBox() или createRectRgn() уже не помню и не так суть важно.
GZe> =DrawText( параметры, 18) && 18 - wrap + rigth alignment
GZe> если HFont горизонтальный - все нормально, вертикальный текст при
GZe> прорисовке находится непонятно в каких системах координат причем такое
GZe> ощущение, что математически обрабатывается только область где должна
GZe> находиться прорисовка горизонтального текста и при выводе текст
GZe> усекается со всех возможных и невозможных сторон :((
GZe> Должна же быть хоть какая-то логика, но я ее не нашел.

Попробуй вместо DrawText использовать TextOut или ExtTextOut. Для этих функций
задаешь начальную точку, из которой будет рисоваться первая буква

GZe> Hу приведите же кто-нибудь пример для GetDCEx() - помоему, это
GZe> единственно приемлимый вариант справиться с Pageframe!

Hу что ты к этой GetDCEx привязался? И без нее все не так уж плохо.

GZe> И еще... "субклассируй окно" - это открывать дочернее?

Hет, всю перерисовку выполнить в FLL и подменить оконную процедуру.

GZe> По поводу .PAINT() OR WM_PAINT .. Блин! ну ведь это еще водключать
GZe> обработчики. Я конечно заметил странность поведения .paint() особенно
GZe> при перекрытии окон, наверное придется и это еще учитывать. Просьбочка
GZe> примерчиком обработки WM_PAINT поделитесь?

Только в FLL
(MSDN в направлении
SetWindowLong(hWnd, GWL_WNDPROC, (LONG)myNewProc)
WindowProc
CallWindowProc
).
Фоксовый код можно тоже вызывать (по _Execute), однако для WM_PAINT не
рекомендуется, ибо тормоза.

С уважением, А. Королев
...
Рейтинг: 0 / 0
WindowProc в фоксе
    #32350942
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж...

Пробую сделать ocx на C++, в которой я ноль. Подскажите тогда как в С++
1. Добавить свойсво LineCount
2. Оброботать Edit1.Change (реакция на WM_????). В обработке:
NewLineCount=SendMessage(hWnd,EM_GETLINECOUNT,0,0)
IF NewLineCount<>Edit1.LineCount
3.сгенерировать событие LineCountIsGanged.
endif
...
Рейтинг: 0 / 0
WindowProc в фоксе
    #32350951
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что VB-шный не работает?
Вероятно вы что-то не так написали...
...
Рейтинг: 0 / 0
WindowProc в фоксе
    #32350964
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не работает :(

На код
thisform.olecontrol1.top=thisform.olecontrol1.top+10
он не реагирует.
Что там может быть неправильно, я уже не знаю (в VB же роботает, а в фоксе не хочет).

А ocx сишки нормально работает (правда его надо дописать)
...
Рейтинг: 0 / 0
WindowProc в фоксе
    #32350988
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если можеш, дай свой e-mail, пришлю исходник (там код на 7кБ)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / WindowProc в фоксе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]