Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 6 раз(а), последний 2021-06-24 08:11:58 |
|||
карма: 0 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 6 раз(а), последний 2021-06-24 08:11:58 |
|||
карма: 0 |
|
Ответов: 84
Рейтинг: 1
|
|||
Извиняюсь, что напостил лишнего - не заметил, что не авторизовался.
|
|||
карма: 1 |
|
Ответов: 8926
Рейтинг: 823
|
|||
NordWest, пройдитесь мышкой по точкам, внимательно читая примечания - в них есть ответы, а с правой стороны поля панель "Свойства" с подразделом "Точки" и там этих точек пропасть, в т. ч. doSelect
|
|||
карма: 19 |
|
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Леонид, а ничего, что
178.23.6.225 писал(а): Пытаюсь управлять элементами другого окна |
|||
карма: 22 |
|
Ответов: 2265
Рейтинг: 676
|
|||
178.23.6.225 писал(а): но SendMessage не содержит такого сообщения. |
|||
карма: 11 |
|
Ответов: 4630
Рейтинг: 749
|
|||
178.23.6.225 писал(а): SendMessage не содержит такого сообщения------------ Дoбавленo в 14.04: [offtop]Блин, надо же [/offtop] |
|||
карма: 26 |
|
Ответов: 8926
Рейтинг: 823
|
|||
карма: 19 |
| ||
файлы: 1 | code_34934.txt [3.8KB] [551] |
Ответов: 84
Рейтинг: 1
|
|||
sla8a писал(а): Номер сообщения можете "нагуглить".Запарился если честно гуглить - везде описание, а вот кодов как то не попадалось. Но потом наткнулся на ресурс где всё же добыл желаемое. Кое что даже стало получаться... code_34936.txt |
|||
карма: 1 |
| ||
файлы: 1 | code_34936.txt [2.4KB] [449] | ||
Голосовали: | sla8a |
Ответов: 84
Рейтинг: 1
|
|||
Продолжаю копаться в сообщениях...
С простыми сообщениями не требующими передачи параметров всё более менее понятно. А вот с более сложными не могу разобраться. У компонента SendMessage есть два входных параметра - WParam и LParam. Пытаюсь разобраться с сообщением cb_FindString Читаю мануал... cb_FindString Находит пеpвый элемент блока списка комбиниpованного блока, соответствующий пpефиксной стpоке. Паpаметpы: wParam: Является индексом, с котоpого должен начинаться поиск. Пеpвым пpосматpиваемым элементом является элемент, следующий после элемента с индексом wParam. Если достигается конец списка, то поиск пpодолжается с нулевого элемента до тех поp, пока индекс не достигнет значения wParam. Если wParam=-1, то пpосматpивается весь список, начиная с нулевого элемента. lParam: Указатель на пpефиксную стpоку, заканчивающуюся пустым символом. Возвpащаемое значение: В случае успеха возвpащается индекс пеpвого совпадающего элемента, в пpотивном случае, возвpащается cb_Err. Как я понимаю в wParam я должен задать индекс, с которого будет стартовать перебор, а вот что задавать в lParam вообще не врубаюсь. code_34940.txt |
|||
карма: 1 |
| ||
файлы: 1 | code_34940.txt [4.2KB] [449] |
Ответов: 9906
Рейтинг: 351
|
|||
В принципе, это делается примерно так:
Есть замечания: 1) Научись сначала правильно искать окна. obj_Form - это не только именно твоя форма, но и, к примеру - аплет. obj_STATIC - это не только именно твоя панель, но и все Label этого уровня. 2) Можно было, выкладывая пример, хотя бы убедиться, что ты работаешь (или не знаешь как работать) с НУЖНЫМ хэндлом. Сэкономил бы коллегам время, между прочим. 3) Это какой же идиот это переводил: "Указатель на пpефиксную стpоку, заканчивающуюся пустым символом" Моего образования не хватает, чтобы связать это с оригиналом: "A pointer to the null-terminated string" Никогда больше не работай с тем ресурсом, где ты добыл этот перевод... |
|||
карма: 9 |
| ||
Голосовали: | NordWest |
Ответов: 84
Рейтинг: 1
|
|||
Galkov, огромное спасибо. Сам бы я к такому решению точно не пришел.
Galkov писал(а): 1) Научись сначала правильно искать окна. obj_Form - это не только именно твоя форма, но и, к примеру - аплет.obj_STATIC - это не только именно твоя панель, но и все Label этого уровня.Я делал просто. Сторонним софтом смотрел ClassName и Caption и подставлял. Имя главной формы сознательно проигнорировал, т.к. был уверен, что в данном конкретном случае будет работать и так. Galkov писал(а): Можно было, выкладывая пример, хотя бы убедиться, что ты работаешь (или не знаешь как работать) с нужным хэндлом.Я определял, что работаю с нужным хендлом по тому, что получал ожидаемые данные посылая CB_GETCURSEL Galkov писал(а): Это какой же идиот это переводил "Указатель на пpефиксную стpоку, заканчивающуюся пустым символомНичего лучшего в сети по данному вопросу на русском языке не нашел, а с английским у меня туго. Вероятно после прочтения русского описания нужно просматривать и англоязычный вариант... А если в вашей схеме сделать так? Не криминально? |
|||
карма: 1 |
|
Ответов: 9906
Рейтинг: 351
|
|||
NordWest писал(а): А где про это почитать?Я делал просто. Сторонним софтом смотрел ClassName и Caption и подставлял А фиг его знает... Про аплета (и кто есть STATIC) я знаю, потому что KOL читал, что советом являться не может. И я даже не знаю, почему он находит нашу форму по Caption... У аплета Caption тот же, для нашего случая. А вспоминать стал, после того, как в Debug-ах нулевые хэндлы увидел. Внимание: УВИДЕЛ. И не надо мне парить про "получаю ответы" Да, "сторонний софт" - это выход, если он правильный. И он обязан был показать две формы и кучу STATIC. NordWest писал(а): Не знаю как это сделать.Я определял, что работаю с нужным хендлом по тому, что получал ожидаемые данные посылая CB_GETCURSEL Ну и что, что "не знаю". Мало ли какие сюрпризы дальше будут... Вообще-то у каждого визульного элемента этот хэндл снизу торчит. Поэтому, задачу можно поделить на две (если, конечно же, думать об этом): поиск хэндла (скажем, чужого приложения), и посылку сообщения. Вторую можно решать (искать решение) независимо от первой. Например:
NordWest писал(а): Вероятно после прочтения русского описания нужно просматривать и англоязычный вариант...А уж семантика термина "пустой символ".... Мир докатился до того, что верить вообще никому нельзя... Например, читаю Вирта, а там - "научная графомания" Не говоря уже о менее известных авторах... К сожалению... NordWest писал(а): А если ...Настолько, что doClear делает именно ЭТО, и ничего кроме ЭТОГО (P.Size := 0). Это просто я в попыхах "не заметил" более простой точки. В этом деле следует усвоить главное: 1) MemoryStream.Memory - пожалуй единственный у нас способ подставить "поинтер" в параметры для SendMessage. А там это часто надо... 2) Данные по этому "поинтеру" можно записать/прочитать с помощью DataToFile 3) Следует иметь ввиду, что, при изменении размеров стрима (например, при записи туда дополнительных данных) - этот "поинтер" легко может изменить свое значение. По научному - реаллоцироваться. 4) Собственно, и все. |
|||
карма: 9 |
|
Ответов: 84
Рейтинг: 1
|
|||
Galkov писал(а): Да, "сторонний софт" - это выход, если он правильный. И он обязан был показать две формы и кучу STATIC.Он может показывать всю структуру, но мне было достаточно этого Galkov писал(а): Вторую можно решать (искать решение) независимо от первой.Об этом я не подумал - спасибо за подсказку. |
|||
карма: 1 |
|
Ответов: 9906
Рейтинг: 351
|
|||
1) А чего на Lable-ы прицел не наводишь
2) Аплет - это форма с нулевой высотой и с шириной и координатами, которые совпадают с нашим MainForm ПОЭТОМУ: фигу ты в него прицелом попадешь. И он является owner-ом для нашей формы. И его Caption - не обязан совпадать с нашим заголовком, но именно его Caption отражается в ToolBar-е винды. И именно для него (а не для нашей формы) винда делает анимацию (ну типа - свернуть/развернуть) [offtop]BTW: всю эту фигню не мы придумывали, естественно [/offtop] Щаз, приду домой - своим шпионом пошарю... Мне его коллега tsdima когда-то давно-давно выписывал |
|||
карма: 9 |
|