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

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

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
11.12.2003, 16:18
    #32350942
lnu
lnu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WindowProc в фоксе
Да уж...

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

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

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


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