Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2010.10.24;
Скачать: [xml.tar.bz2];

Вниз

Как узнать хендл элемента зная его индификатор в ресурсе?   Найти похожие ветки 

 
AnarchyMob ©   (2008-10-28 22:06) [0]

Пример такой: есть форма в ресурсе на ней, к примеру, флажёк (может быть что угодно). Как узнать хендл флажка зная только его индефикатор, например #2001. Нужно для того чтобы отослать сообщение этому флажку, но для отправки ведь нужно знать его хендл, FindWindow не подойдёт (класс элемента неизвестен).


 
Danger ©   (2008-10-29 05:28) [1]

форма или диалог?
это разные понятия.


 
AnarchyMob ©   (2008-10-29 10:36) [2]

Диалог. Но я даю ведь FindResource есть, сто раз мимо прошёл и не заметил, хотя использовал эту функцию много раз.


 
Danger ©   (2008-10-29 13:57) [3]

GetDlgItem делает именно то, что тебе нужно.
Там еще есть функции вида GetDlg* , может быть пригодится.


 
AnarchyMob ©   (2008-10-29 15:19) [4]

Спасибо то что надо. Я хочу сделать функцию AssignCtrl которая будет возвращать хендл, и чтобы потом можно было изменять свойства элементов на диалоге из ресурса обычным для Object Pascal способом.


 
Danger ©   (2008-10-30 09:34) [5]


> AnarchyMob ©   (29.10.08 15:19) [4]
> чтобы потом можно было изменять свойства элементов на диалоге

Честно говоря, не думаю, что это удачная идея. Просто дублируете функционал, то же самое стандартным способом делают функции SetWindowLong(), SetWindowLongPtr() etc.

> обычным для Object Pascal способом.
использование объектного паскаля (или любого другого языка/реализации) и механизмов winapi не взаимоисключает друг друга ;) там реально нет нужды огород городить ради установки и получения стиля элементов диалога, и так все достаточно понятно.


 
AnarchyMob ©   (2008-11-05 19:42) [6]


> использование объектного паскаля (или любого другого языка/реализации)
> и механизмов winapi не взаимоисключает друг друга ;) там
> реально нет нужды огород городить ради установки и получения
> стиля элементов диалога, и так все достаточно понятно.


Вот я про это и говорю, я делаю библиотеку AFL (Anarchy Function Library) в которой не использую ни классов ни объектов, а просто упращаю функции WinAPI, у меня там для динамического изменения свойств компонентов используются функции и процедуры вида: Set... и Get..., например SetCaption устанавливает текст компонента, в первом параметре указываешь хендл элемента, а во втором новый текст. Вот так, а для изменения свойств компонентов из ресурсных диалогов будут использоватся процедуры и функции вида: RSet... и RGet....


 
MTsv DN   (2008-11-05 19:59) [7]

> не использую ни классов ни объектов
Весьма оригинально, т.е. ООП ваще "лесом идет"? Весьма странный подход для программирования в многозадачной среде...ну, да дело Ваше.


 
AnarchyMob ©   (2008-11-06 03:35) [8]

Весьма оригинально, т.е. ООП ваще "лесом идет"? Весьма странный подход для программирования в многозадачной среде...ну, да дело Ваше.

Сейчас я вам всё объясню, начну с того что на данный момент я я т.с. специализируюсь на разработке ПО для WinCE (только сейчас я решил этим занятся всерьёз). Долго выбирал инструмент для написания программ, был опыт работы с MSVS 2005, Pelles C, PPL и наконец Lazarus (в сторону "басика" и "технологий будущего" типа .NET я даже не смотрел). Потом подумав "взвесив" все за к.г. и против я решил остановится на IDE Lazarus и, соответственно, языке Free Pascal. В "лазаре" я программировал используя LCL, KOL и WinAPI, после всех испытаний решил остановится на библиотеке KOL, и как-раз с её использованием я начал "ваять" своё первое приложение. Я кидал на форму (под словом кидал я подрозумеваю конечно функции New... я не использовал MCK по причине сырости "зеркал") всё новые и новые компоненты, экзешник хоть и рос, но рост проходил достаточно спокойно. Момент истины наступил тогда когда я на одну из закладок TabControlla вывел картинку (битмап), потребление оперативной памяти моей программой возрасло сразу !!! на 54 кб !!! я ***ел, у меня в памяти были свежи воспоминания о том что подобная прога с картинкой написанная в MSVS 2005 и/или Pelles C потребляла 14 кб. В этот момент моё представление о Free Pascal"e Lazarus"e & KOL коренным образом поменялось и я, в порыве отчаянья удалил "лазаря" со своего компьютера, после, немного успокоившись я понял что на Сях я писал используя только WinAPI (и нескольких классиков для вывода картинок, работы с файлами и прчей "шелухи"). Опять установив Lazarus немного настроив его я переписал весь код своей недоработанной программы на "голый" WinAPI (тоже с картинкой) какое было моё удивление когда я увидел что WinAPI"шная программа занимает в оп. памяти всего-навсего 14,9 кб (ВОТ ЭТО СУПЕР !!!) и всё работает, после этого моя вера в WinAPI только возрасла, и я наконец понял на чём нужно программировать если надо получить маленький ЕХЕ и минимальное потребление оп. памяти.

P.S.

Я в начале цитировал ваши слова по поводу ООП, так что, давайте подведём итоги. (LCL & VCL) использования классов, их там "туева хуча", результат: я лучше промолчу. KOL использование объектов (их там немного) результат конечно неплохой, но тоже не сахар размер программы небольшой (хотя очень сильно зависит от количества и типа контроллов (использование универсальных элементов (ListView and TreeView) предпочтительнее с точки зрения сокращения потребления оп. памяти)), но оперативки жрёт уйма (если флешку еще прикупить можно то оперативку никак). И наконец WinAPI результат: размер мизерный потребление памяти минимальное, но размер ручного кода в разы больше чем при использовании вышеуказаных вариантов, вот иммено для уменьшения ручного кода я и решил написать библиотеку построенную на "чистом" WinAPI, она из себя будет представлят как-бы сворачивание кода, а в итоге будет выходить код полностью на WinAPI. И еще, программирование на WinAPI даёт самое главное (по крайней мере для меня) качество как нативность кода, и правильное представление о программировании в целом (ведь иногда люди создающие достаточно неплохие программы в Delphi иной раз даже не знают как устроена система сообщений в Windows и что такое CALLBACK функции (паскалевский тип Stdcall)).

P.S.S.

Я решил отказатся от дублирования всех функций Set... & Get... для использования их с элементами управления из ресурсных диалогов (глупо ради одного параметра в каждой функции переписывать  все эти функции), я лучше буду приводить все ресурсные контроллы сразу к типу HWND в секции var.

P.P.S.S.

Все мои вышесказаные слова справедливы в случае программирования для платформы WinCE, для Win32 может быть всё немного иначе, но WinAPI и на платформе Win32 "рулит".

P.P.S.S.S.

Кстати свою библиотеку AFL я пишу паралельно и для WinCE и для Win32.


 
Danger ©   (2008-11-06 05:19) [9]

Кстати, есть такая библиотека ACL (API Control Library) от А. Боковикова и подборка LENIN INC win32api library. Последняя стала платной, но можно найти предыдущие версии, которые распространялись на бесплатной основе. Может быть, поможет в разработке.


 
Danger ©   (2008-11-06 06:03) [10]


> AnarchyMob ©   (06.11.08 03:35) [8]
>
>  после этого моя вера в WinAPI только возрасла, и я наконец
> понял на чём нужно программировать если надо получить маленький
> ЕХЕ и минимальное потребление оп. памяти.

Вообще, для разных целей - разные инструменты. На мой взгляд, если разработка вашего приложения на чистом winapi займет столько же времени и усилий, сколько разработка этого же приложения на KOL, то тогда игра стоит свеч. Иначе - все зависит от обстоятельств.

Никто не спорит с тем, что с точки зрения ресурсов выгоднее всего писать на winapi. Вопрос лишь в том, чтобы найти компромисс между производительностью/затратами на разработку. В зависимости от задачи подбирается инструмент (то бишь, библиотека).


 
AnarchyMob ©   (2008-11-06 17:14) [11]

Спасибо за то что подсказали что есть библиотеки WinAPI, это мне сильно поможет в разработке моей "библы". LENIN INC примерно то что я собирался делать, вот только мне всё надо для WinCE, а для Win32 я не буду создавать свою библиотеку (зачем делать то что уже есть), сконцентрируюсь только на WindowsMobile. ACL пока что-то не нашёл, но буду икать.

По поводу обстоятельств. Поймите меня, упрощение программирования до бесконечности вести нельзя, если постоянно упрощать и упрощать то делфи вскоре превратится в нечто напоминающее Multimedia Builder (среда для создания AutoRun"ов), ведь упрощение это только внешне, а что внутри, внутри сотни классов и классиков вообщем такие дебри в которые нехочется даже "суватся". А правда что The Bat на делфи написана (вообще, "фейс" делфовских прог виден за сто километров :-)


 
AnarchyMob ©   (2008-11-06 17:28) [12]

Извините меня, я только сейчас понял что пишу НЕМНОГО не в тему, просьба модераторам сего замечательного сайта, пожалуйста не "убивайте" тему, а (если это возможно) нежно перенесите её в конференцию WinAPI чтобы можно было продолжать эту дискуссию. Ладно?


 
AnarchyMob ©   (2008-11-06 17:58) [13]

Извините меня, я только сейчас понял что пишу НЕМНОГО не в тему, просьба модераторам сего замечательного сайта, пожалуйста не "убивайте" тему, а (если это возможно) нежно перенесите её в конференцию WinAPI чтобы можно было продолжать эту дискуссию. Ладно?



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2010.10.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.004 c
15-1279538234
Kerk
2010-07-19 15:17
2010.10.24
WinXP & keyboard layout


2-1280406895
И. Павел
2010-07-29 16:34
2010.10.24
Критическая ошибка при выполнении групповой политики


6-1228000045
Pall
2008-11-30 02:07
2010.10.24
tcp сервер


6-1227811974
stas
2008-11-27 21:52
2010.10.24
Проверить наличие коннекта к определенному IP


15-1279571377
Юрий
2010-07-20 00:29
2010.10.24
С днем рождения ! 20 июля 2010 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский