Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Как совмещается [QT] и WinAPI под Windows


Автор: XProgammer 9.12.2011, 11:10
Вопрос от чайника. 

Есть ли в QT функции для работы с окнами Windows, например слежение за окнами, хуки, для работы с системными настройками и железом, или нужно подключать WinAPI? 

Если нужно, непонятно как перехватывать соответсвующие Windows-сообщения, например WH_CALLWNDPROC для хуков. Какой тут механизм?

Автор: bsa 9.12.2011, 11:19
примеры необходимого пожалуйста.
Просто есть многое. Можно перехватить события клавиш, можно события изменения размера окна... Конкретней.
И что ты понимаешь под "хуками"?

Автор: XProgammer 9.12.2011, 13:03
Например нужно перехватить событие изменения активного окна. 
Или наподобие перехвата сообщения WM_DRAWCLIPBOARD в winap событие изменения содержимого буфера
Есть для этого набор функций в qt?
Или работать с компортом, лучше WINAPI использовать? чтоб не было тормозов?? если программа только под винду.

Автор: bsa 9.12.2011, 14:11
Цитата(XProgammer @  9.12.2011,  14:03 Найти цитируемый пост)
Например нужно перехватить событие изменения активного окна. 
смена фокуса что ли? есть это
Цитата(XProgammer @  9.12.2011,  14:03 Найти цитируемый пост)
Или наподобие перехвата сообщения WM_DRAWCLIPBOARD в winap событие изменения содержимого буфера
ищи описание QClipboardEvent

Цитата(XProgammer @  9.12.2011,  14:03 Найти цитируемый пост)
Или работать с компортом, лучше WINAPI использовать? чтоб не было тормозов?? если программа только под винду. 
Если не секрет, а что ты делать с ним собрался? Скорость данного порта очень низкая, поэтому тормозов быть в принципе не может.
На данный момент в Qt не штатной поддержки последовательных портов. Сейчас идет активное продвижение его http://gitorious.org/qserialdevice/qserialdevice/trees/2.0 для включения в Qt. Сотрудники Nokia уже подтвердили готовность. Сейчас идет урегулирования юридических вопросов о передаче прав на код.

Автор: XProgammer 9.12.2011, 18:02
ок, спасибо за развернутый ответ, немного разобрался, просто собрался переходить с MFC на QT под windows, хочу застраховаться что проблем больших не будет, и все возможности winapi при надобности останутся  smile 

Автор: spyswamp 9.12.2011, 18:06
А каковы будут основные плюсы перехода на Qt?

Автор: XProgammer 9.12.2011, 19:04
QT это абсолютно другой образ мышления, приятно иметь дело, простота, понятность, и логичность, сделано для человека. Когда писали MFC то судя по всему жестко привязались к WinAPI, и, что получилось, неудобно использовать. Это с моей точки зрения))

Автор: spyswamp 9.12.2011, 20:13
QT - это QuickTime.

Кстати, для MFC уже давно существует крутая и развиваемая надстройка от BCGSoft. С ней работать достаточно приятно. Единственный, на мой взгляд, минус - цена. Т.е. подходит только для корпоративного использования.

Автор: XProgammer 9.12.2011, 21:04
спасибо, посмотрю))

Автор: bsa 11.12.2011, 19:03
Цитата(XProgammer @  9.12.2011,  19:02 Найти цитируемый пост)
ок, спасибо за развернутый ответ, немного разобрался, просто собрался переходить с MFC на QT под windows, хочу застратраховаться что проблем больших не будет, и все возможности winapi при надобности останутся

Все возможности останутся. Вот только далеко не всегда они нужны... Просто когда переходишь на Qt надо максимально забыть о существовании нативных средств системы. И только в случае отсутствия в Qt необходимого функционала прибегать к использованию API системы. Причем, желательно это завернуть так, чтобы в основном коде программы не API никак не проявлялся. Qt же кроссплатформенная. И рано или поздно может возникнуть соблазн собрать программу под другие ОС. А если у тебя код пронизан WinAPI, то править придется много, так что станет лень.

Автор: XProgammer 14.12.2011, 00:56
спасибо за советы!
может и придется перейти на другую ос.


Автор: spyswamp 15.12.2011, 16:40
Я б на твоем месте уже давно перешел и забыл про венду. smile

Автор: XProgammer 15.12.2011, 20:16
ну я пишу программы для заводов,
в случае чего, винду легко переставить человеку, далекому от компутеров, а про линь например многие и не слышали)

Автор: bsa 15.12.2011, 20:47
Цитата(XProgammer @  15.12.2011,  21:16 Найти цитируемый пост)
в случае чего, винду легко переставить человеку, далекому от компутеров, а про линь например многие и не слышали) 

Супер! Фраза из разряда "спичку зажечь может каждый, а о тринитротолуоле многие и не слышали"... Так вот, современный Linux ставится не сложнее, чем Windows. Причем, некоторые диструбутивы дают возможность побаловаться с ними до установки.
Если системный администратор не знает о Linux'е, то гнать его надо с завода - он не компетентен в своей области.
Если на заводе каждый сотрудник может переустановить систему - гнать надо начальника IT отдела.

Автор: spyswamp 15.12.2011, 21:56
Это все утопия. Сотрудники провайдеров не могут настроить интернет на линуксе. Хотя в той же Убунте это делается в 4 раза быстрее, чем в винде, т.к. нет тонны модальных окон и закладок. :(

Автор: XProgammer 15.12.2011, 22:10
Цитата(bsa @ 15.12.2011,  20:47)
Так вот, современный Linux ставится не сложнее, чем Windows. 

ну да! есть правда в твоих словах))

программы пишу для  цеха, управление оборудованием, никаких тонких настроек или интернета там в принципе не надо))

Автор: bsa 16.12.2011, 10:32
Цитата(spyswamp @ 15.12.2011,  22:56)
Это все утопия. Сотрудники провайдеров не могут настроить интернет на линуксе. Хотя в той же Убунте это делается в 4 раза быстрее, чем в винде, т.к. нет тонны модальных окон и закладок. :(

Ты разницу между "сисадмин" и "сотрудник тех поддержки" знаешь? Я общался с админом провайдера, и он мне рассказал, кто работает в техподдержке. Там работают простые "опытные пользователи" - например, студенты. Их задача решать наиболее популярные проблемы.

Автор: spyswamp 16.12.2011, 16:27
bsa, а где в моем сообщении ты увидел словосочетание "сотрудник тех поддержки"?

Автор: bsa 16.12.2011, 17:16
Цитата(spyswamp @  16.12.2011,  17:27 Найти цитируемый пост)
bsa, а где в моем сообщении ты увидел словосочетание "сотрудник тех поддержки"? 
Т.е. ты с системным администратором общался? Просто есть очень серьезные сомнения на этот счет. Потому что у всех провайдеров системы на базе *nix - винда нагрузку не выдержит...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)