|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Есть ли аналог дельфйскому FindComponent? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 11:04 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 11:15 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Видимо, я не совсем корректно поставил вопрос. Надо найти компонент на форме по его имени в текстовом формате. Т.е. должно быть не Код: plaintext 1.
а что-то вроде Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 11:20 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, Это, конечно, всё замечательно, но первая же ассоциация с "дельфйским FindComponent" -- это билдерный FindComponent, т.к. и тот и другой используют VCL для рисования UI. Если ты используешь другое средство для отображения UI в C++, то самое время об этом упомянуть во избежание дальнейшей игры в испорченный телефон. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 11:39 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Использую embedded C++ , компилирую под WinCE ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 11:42 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbИспользую embedded C++ В нём нет ни форм, ни компонентов, обломись. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 12:20 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSergey_rbИспользую embedded C++ В нём нет ни форм, ни компонентов, обломись. Как нет, когда прога запускает форму, на которой лежат компоненты. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 12:35 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Скажу больше, функция Код: plaintext 1.
Находит компонент на форме А связка Код: plaintext 1.
Устанавливает значение в компоненте IDC_EDIT1 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 12:46 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbКак нет, когда прога запускает форму, на которой лежат компоненты. А вот так. Программа показывает диалог на котором лежат окна. Диалог это не форма. Окна это не компоненты. А если ты внимательно присмотришься к исходникам, то увидишь, что и "IDC_EDIT1" это не имя, а макрос, разворачивающийся в числовую константу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:25 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, в приведенном тобой примере функция WINAPI GetDlgItem работать не будет, так как, согласно документации, при её вызове должно указываться два параметра - хендл окна и целочисленный (int) идентификатор элемента. Где ты там строку разглядел? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:30 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSergey_rbКак нет, когда прога запускает форму, на которой лежат компоненты. А вот так. Программа показывает диалог на котором лежат окна. Диалог это не форма. Окна это не компоненты. А если ты внимательно присмотришься к исходникам, то увидишь, что и "IDC_EDIT1" это не имя, а макрос, разворачивающийся в числовую константу. Значит функция FindWindow должна находить окно на диалоге? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:39 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
rdb_devSergey_rb, в приведенном тобой примере функция WINAPI GetDlgItem работать не будет, так как, согласно документации, при её вызове должно указываться два параметра - хендл окна и целочисленный (int) идентификатор элемента. Где ты там строку разглядел? GetDlgItem - перегруженная функция, работает и с одним параметром ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:41 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbЗначит функция FindWindow должна находить окно на диалоге? Да. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:43 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
rdb_devSergey_rb, в приведенном тобой примере функция WINAPI GetDlgItem работать не будет, так как, согласно документации, при её вызове должно указываться два параметра - хендл окна и целочисленный (int) идентификатор элемента. Где ты там строку разглядел? Вангую, что это допотопный MFC, который давно уже пора закопать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:45 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSergey_rbЗначит функция FindWindow должна находить окно на диалоге? Да. Только почему-то не находит Код: plaintext 1.
Возвращает NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:56 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
NekZrdb_devSergey_rb, в приведенном тобой примере функция WINAPI GetDlgItem работать не будет, так как, согласно документации, при её вызове должно указываться два параметра - хендл окна и целочисленный (int) идентификатор элемента. Где ты там строку разглядел? Вангую, что это допотопный MFC, который давно уже пора закопать. Тут и вангвать нечего - Embedded C++ под WinCe ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:57 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbВозвращает NULL а btnOk разве окно верхнего уровня ? документацию хоть почитал бы... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:58 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbТолько почему-то не находит Потому-то во-первых, имя класса у батона "BUTTON", а во-вторых, на нём явно написано не "btkOK", а, вангую, просто "OK". Почитай уже описание функций, которыми пытаешься пользоваться. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:03 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Cerebrumа btnOk разве окно верхнего уровня ? Кстати, да. Там, выше, я был неправ, FindWindow не найдёт дочерние окна. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:05 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov"btkOK", а, вангую, просто "OK" и не исключено, что "&OK" для hot-keys маркеров автору надо написать обход всех окон его диалога, с помощью EnumWindows/GetWindow (для дочерних) и составить список действительных имен компонентов и их классов, если Spy++ в WinCE не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:14 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Как то совсем грустно становится, если функция ищет не по имени окна, а по сообщению в нем, которое может меняться. Получается, что EditBox вообще нельзя найти, если пользователь ввел туда какой-то текст? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:15 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, просто ты изначально поставил неправильную задачу себе. Зачем тебе нужно искать таким образом окна ? У тебя чужой код и ты хочешь подправить их поведение ? Если код твой собственный, то для всех окон можно задать уникальный control id на этапе создания окна (или даже после того через SetWindowLong(Ptr)), в CreateWindow(Ex) и используя данный id точно находить то окно, которое тебе нужно Если код чужой, то тебе ничего не остается кроме полного обхода дерева окон и поиска необходимого окна по каким-либо критериям. Как правило, имени класса и порядка расположения окна в этом дереве вполне достаточно, чтобы точно сказать что ты нашел то, что нужно. По крайней мере до следующего релиза этого софта, где разработчик может внести изменения и весь твой код придется перепроверять Так зачем тебе это нужно? Давай начнем хотя бы с этого ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:24 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbПолучается, что EditBox вообще нельзя найти А его обычно и не надо искать. При создании окна вменяемый программист обычно сохраняет где-то его хэндл. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:26 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
CerebrumSergey_rb, просто ты изначально поставил неправильную задачу себе. Зачем тебе нужно искать таким образом окна ? У тебя чужой код и ты хочешь подправить их поведение ? Если код твой собственный, то для всех окон можно задать уникальный control id на этапе создания окна (или даже после того через SetWindowLong(Ptr)), в CreateWindow(Ex) и используя данный id точно находить то окно, которое тебе нужно Если код чужой, то тебе ничего не остается кроме полного обхода дерева окон и поиска необходимого окна по каким-либо критериям. Как правило, имени класса и порядка расположения окна в этом дереве вполне достаточно, чтобы точно сказать что ты нашел то, что нужно. По крайней мере до следующего релиза этого софта, где разработчик может внести изменения и весь твой код придется перепроверять Так зачем тебе это нужно? Давай начнем хотя бы с этого Все началось с того, что моя прога, написанная на Лазарусе, работавшая много лет на WinCE6, не работает под WinCe7. Вот я ищу решения под WinCe7 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:29 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSergey_rbПолучается, что EditBox вообще нельзя найти А его обычно и не надо искать. При создании окна вменяемый программист обычно сохраняет где-то его хэндл. Я уже подумываю о динамическом создании контролов, при запуске программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:31 |
|
|
start [/forum/topic.php?fid=57&fpage=16&tid=2017752]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 253ms |
total: | 380ms |
0 / 0 |