|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
В проекте создаётся свой собственный textbox функциями API. Проблема в том, что если его высота не позволяет показать весь текст (т.е. текст должен "обрубаться" снизу), то этот текст вообще не показывается и с этим текстбоксом что-то вообще неладное начинает твориться - например, по TAB он больше вообще фокус не может получить. Не спрашивайте почему API - долго рассказывать, просто так надо в проекте и надо заставить эту конструкцию работать. Стандартный TextBox контрол из VB6 в данном сценарии работает "на ура". Ниже даю код чтобы увидеть траблу вживую. Положите на форму стандартный TextBox с именем "Text1" и запустите форму. В верхний textbox не получится ничего ввести, хотя в нижний (перепозиционированный стандартный из VB) можно вводить текст, хоть его нижний край и будет обрезан. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
Я уже и MS Spy++ использовал чтобы посмотреть какие флаги (стили) в текстбоксе от VB используются, и то же самое у себя делал - толку ноль. Даже не знаю в чём ещё может быть проблема... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 15:13 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
wisekatНе спрашивайте почему API - долго рассказывать, просто так надо в проекте и надо заставить эту конструкцию работать.А все-таки? Иногда проще изменить условия задачи, чем из болота тащить бегемота. А по сути здесь вам никто не поможет. Вам нужно на форум по c++ — это их кухня. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 15:21 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
Ну нельзя условия задачи менять :) Ладно, пойду и Сишников/АПИшников поспрашиваю :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 15:25 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
wisekat, как не странно, но текст показывается = ) Правда, цвет шрифта и цвет выделения у него цвета фона текстового поля (или оно же цвет формы). Проверить можно если сделать "выделение" и скопировать и вставить текст. Даже можно редактировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2011, 19:31 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
VSVLAD , система какая у Вас? У меня в 7-ке получается как на приаттаченном скриншоте. Сначала в API Edit мигает курсор как-то странно почти по центру, при попытке что-то набрать курсор вообще пропадает. Ещё одна странность: если запустить такой проект, потом переключиться на другое окно, а потом обратно, то курсор автоматом перемещается в стандартный TextBox и больше его уже никак нельзя вернуть в наш АПИ-шный. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 16:15 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
Забыл нажать кнопку для загрузки файла скриншота: ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 16:16 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
У меня тоже самое и на XP. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 16:22 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
Про передачу фокуса тут мне на другом форуме напомнили, что в VB есть нюансы при использовании чистых АПИ контролов в этом случае. Там надо специальные COM-интерфейсы использовать. Ну да это ладно - я контрол создаю единожды только при редактировании нужного мне элемента, так бог с ним с фокусом. А вот почему у VSVLAD всё работает - вот вопрос... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 16:29 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
У меня текста не видно, но он присутствует. Т.е. цвет шрифта = цвету фона = цвету выделения = цвету курсора. Проверить сие можно если воспользоваться "методом вслепую" и поработать с буфером обменом. Ctrl+C, Ctrl+V - можно "выделить" текст и скопировать, а также вставлять в это поле. Опять же всё в слепую. Т.е. проблема в цвете, а не в том, что фокуса в нём вообще нет ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 16:58 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
VSVLADТ.е. проблема в цвете, а не в том, что фокуса в нём вообще нет Да, поработать вслепую можно - я согласен, но проблема не в цвете. Почему? Да потому, что простое увеличение высоты Edit-а приводит к появлению текста без всяких дополнительных ухищрений с установкой его цвета. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2011, 10:27 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
> Автор: wisekat > Да потому, что простое увеличение высоты Edit-а приводит к появлению текста без всяких дополнительных ухищрений с > установкой его цвета. А шрифт какой использовали? По моему нужны TrueType Fonts потому что они(или не они?) вроде как векторные и поэтому маштабируются в любой размер без потери качества. А обычные шрифты - так не умеют. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2011, 10:40 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
Блин, ну а при чём тут масштабирование шрифтов? Я что, где-то что-то про это сказал? Нужна просто классическая "обрезка" границей контрола видимой части букв - и всё. Чистая классика Windows. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2011, 11:53 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
Час назад догадался как исключить влияние "хитрой" системы управления фокусом в VB6. Вспомнил, что когда-то на Амазоне заказывал замечательную книгу Мэтью Курланда Advanced Visual Basic 6 Power Techniques for Everyday Programs (сайт книги - здесь ). В книге целый раздел был посвящён созданию API-контролов и их полной интеграции со стандартными формами VB. Я нашёл проект под названием MinimalEditWindowLess который как нельзя лучше соответствует тому, что делаю я. Начал играться с проектом. Если в API Edit контроле, который создаёт Мастер Курланд, добавить всего лишь ES_MULTILINE в вызов CreateWindowEx, то всё падает так же как и у меня (конечно, надо сделать высоту контрола на форме достаточно маленькой - пикселов так 13). В аттаче - проект если кто хочет поиграться. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2011, 12:07 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
Для проекта Курланда из пред. поста нужны ещё некоторые библиотеки - они в аттаче. Положите на одном уровне с папкой MinimalEditWindowLess. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2011, 12:10 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
единственное, что не понятно, зачем все эти пляски с бубном? чем не устраивает обычный TextBox? PS на счёт truetype шрифта - совет верный, прислушайтесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2011, 12:12 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
Konst_Oneединственное, что не понятно, зачем все эти пляски с бубном? чем не устраивает обычный TextBox?Мне тоже интересно, но автор партизанит :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2011, 12:13 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
Ой хлопці мені здається шось ми не там шукаємо :) А может попробовать развернуть проблему со стороны скажем Windows Forms .NET? У них система очень прозрачная по отношению к API-самодеятельности на форме по сравнению с classic VB6. И у них также всё работает нормально с edit-ом если идти по моему сценарию: кладём на форму multiline textbox, делаем его высотой тех же 13 пикселов, и всё ок - текст обрезается внизу, но верхняя часть видна нормально. Я уже писал что я пытался через Spy++ выяснить разницу (предполагая что дело в стилях контрола), но так и не нашёл в чём дело. Может я не на то смотрел? Или не так искал? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2011, 12:17 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
Да шо тут партизанить - нужен Unicode-текстбокс (VB'шный только ANSI), в котором надо иметь контроль над рядом системных фич, которые через обычный VB не сделаешь. Вобщем, предыдущая генерация проекта и использовала VB'шный, затем от него отказались т.к. понаходили кучу затыков, вот и решили сделав глубокий вдох переписать контрол "с нуля" на чистом API. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2011, 12:21 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
поищите тему , я давал ссылку на создание UNICODE-контролов на VB (задача не простая), может MS Forms 2.0 обойдётесь? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2011, 12:28 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
Konst_Oneпоищите тему , я давал ссылку на создание UNICODE-контролов на VB (задача не простая) Не простая - могу подтвердить :) Тему через список сообщений в профиле пользователя не нашёл. Konst_Oneможет MS Forms 2.0 обойдётесь? Не надонам от MS Office никакой зависимости :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2011, 12:52 |
|
API EditBox не показывает текст если его высота достаточно мала
|
|||
---|---|---|---|
#18+
Tutorial Using Unicode in Visual Basic 6.0 изучай тогда ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2011, 12:58 |
|
|
start [/forum/topic.php?fid=60&fpage=104&tid=2158827]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 164ms |
0 / 0 |