Текущий архив: 2007.02.25;
Скачать: CL | DM;
ВнизРедактор форм Найти похожие ветки
← →
ANTPro © (2007-01-30 13:01) [0]Как реализовать на WinAPI перетаскивание контролов(EditBox, Button...)?
← →
tesseract © (2007-01-30 13:55) [1]Почитать MSDN. На WinAPi придёться изобрести два велосипеда и трактор.
А так перхватывать сообщения мыши и обрабатывать их.
← →
ANTPro © (2007-01-30 14:11) [2]> [1] tesseract © (30.01.07 13:55)
> На WinAPi придёться изобрести два велосипеда и трактор.
Увы :(
← →
DVM © (2007-01-30 15:59) [3]
> ANTPro © (30.01.07 14:11) [2]
Всего 3 сообщения обрабатывать: WM_MOUSEDOWN, WM_MOUSEMOVE, WM_MOUSEUP
← →
tesseract © (2007-01-30 16:02) [4]
> DVM © (30.01.07 15:59) [3]
Угу, а курсорчки подрисовать? а с DnD поиграться?
← →
DVM © (2007-01-30 16:04) [5]
> tesseract © (30.01.07 16:02) [4]
Еще и копирование со вставкой добавить и т.д. Тогда конечно попотеть придется.
← →
tesseract © (2007-01-30 16:08) [6]
> Еще и копирование со вставкой добавить
Это, как раз-таки не сложно.
← →
DVM © (2007-01-30 16:11) [7]
> Это, как раз-таки не сложно.
Ну не скажи. Если копируется не просто окно, а окно со всеми своими дочерними окнами и все это на апи.
← →
ANTPro © (2007-01-30 16:31) [8]> [3] DVM © (30.01.07 15:59)
> WM_MOUSEDOWN, WM_MOUSEMOVE, WM_MOUSEUP
Еслиб все было так просто :(
Других сообщений нет? Неахота сабклассить, хотя через предка можно достать по WM_NOTIFY. Но может есть еще варианты?
← →
DVM © (2007-01-30 16:42) [9]
> Неахота сабклассить,
Это же не сложно. Охота-ноохота, а придется.
← →
tesseract © (2007-01-30 16:54) [10]
> Ну не скажи. Если копируется не просто окно, а окно со всеми
> своими дочерними окнами и все это на апи.
?? Структуры вспомагательные по которым окна создаются рулят по любому.
← →
ANTPro © (2007-01-30 17:10) [11]> [4] tesseract © (30.01.07 16:02)
> а с DnD поиграться?
Что под этим подразумевается?
← →
ANTPro © (2007-01-30 17:11) [12]> [9] DVM © (30.01.07 16:42)
> Это же не сложно. Охота-ноохота, а придется.
Получится не универсально, хотя если нет других вариантов, то поробую
← →
tesseract © (2007-01-30 17:24) [13]
> Что под этим подразумевается?
Drag & Drop
← →
ANTPro © (2007-01-30 17:34) [14]> [13] tesseract © (30.01.07 17:24)
> Drag & Drop
: ) Я не об этом, что значит "поиграться" и через какие мессаги?
← →
GrayFace © (2007-01-30 19:59) [15]tesseract © (30.01.07 16:02) [4]
Угу, а курсорчки подрисовать? а с DnD поиграться?
Зачем??
ANTPro © (30.01.07 16:31) [8]
Неахота сабклассить, хотя через предка можно достать по WM_NOTIFY. Но может есть еще варианты?
Сабклассить надо все, это не проблема.
tesseract © (30.01.07 16:54) [10]
?? Структуры вспомагательные по которым окна создаются рулят по любому.
А у ListView Items запоминать? А и т.п.?
P.S. Перетаскивание делается как и с формой:WM_KEYDOWN: SendMessage(Handle, WM_SYSCOMMAND, $f012, 0);
Точно так же и всякие изменения размеров за уголки.
← →
tesseract © (2007-01-30 21:31) [16]> [15] GrayFace © (30.01.07 19:59)
> WM_KEYDOWN:
Протрезвей и посмотри тему. WM_KEYDOWN edit заглушит, если PreTranslateMessage не использовать, а это весьма нерекомендуемая операция.
> А у ListView Items запоминать? А и т.п.?
> P.S. Перетаскивание делается как и с формой:
-10, форма на WinApi отстуствует. Про этот MagicNumber всем известно.
Не прекручивай, ListView вообще-то к базовым элементам управления не относиться. А ты позиционирование сделай и сохранение/восстановление параметров при закрытии приложения Без сохранения информации об элементе управления.
> Точно так же и всякие изменения размеров за уголки.
ГМ, вот уголки с таким кодом точно не прокатят.
← →
GrayFace © (2007-01-30 22:16) [17]tesseract © (30.01.07 21:31) [16]
Да, конечно WM_LBUTTONDOWN. Для уголков надо менять параметр $f012.
tesseract © (30.01.07 21:31) [16]
-10, форма на WinApi отстуствует.
Как и связь этого факта с моим постом.
tesseract © (30.01.07 21:31) [16]
MagicNumber
Че это?
tesseract © (30.01.07 21:31) [16]
Не прекручивай, ListView вообще-то к базовым элементам управления не относиться. А ты позиционирование сделай и сохранение/восстановление параметров при закрытии приложения Без сохранения информации об элементе управления.
Согласен.
← →
tesseract © (2007-01-30 22:56) [18]> Да, конечно WM_LBUTTONDOWN. Для уголков надо менять параметр
> $f012.
Точно не помню, вроде не глушит.
> MagicNumber
> Че это?
> $f012
Есть константа с говорящим именем для такой команды.
ЗЫ: А непроще сделать как все ? Использовать не элементы управления, а "битмапы"? Так работают редакторы ресурсов, и 1с например.
← →
ANTPro © (2007-01-30 23:01) [19]> [15] GrayFace © (30.01.07 19:59)
> Точно так же и всякие изменения размеров за уголки.
Уголков у меня нет. Я сделал тупо через стили. ИМХО так даже лучше.
> [16] tesseract © (30.01.07 21:31)
> WM_KEYDOWN edit заглушит, если PreTranslateMessage не использовать,
> а это весьма нерекомендуемая операция.
Вот это меня и беспокоит. Можно по-подробней?
← →
tesseract © (2007-01-30 23:11) [20]> Вот это меня и беспокоит. Можно по-подробней?
MSDN там подробно. Эта функция вызывается перед всеми функциями обработки сообщений. Например у меня половина программы под WinCE на ней базировалась (нужен был перехват в Edit нажатия аппаратных клавиш).
Но там свои приколы, например одно сообщение получают все - от предка до потомка, если его не глушануть.
← →
ANTPro © (2007-01-31 00:05) [21]> [20] tesseract © (30.01.07 23:11)
> MSDN
Там я буду долго искать. Да и все возможные реализации врядли найду.
Сабкласс попробую, может, что и получится...
← →
tesseract © (2007-01-31 10:23) [22]
> Там я буду долго искать.
Описание функции PreTranslateMessage? Оно в хелпе от D7 есть, в Turbo Delphi почему-то нет. Просто в MSDN есть с примерами. А так - обычная функция обработки сообщений. Не забываем главное дальше управление передавать, а то прога повиснет.
← →
GrayFace © (2007-01-31 12:55) [23]tesseract © (30.01.07 22:56) [18]
> Да, конечно WM_LBUTTONDOWN. Для уголков надо менять параметр
> $f012.
Точно не помню, вроде не глушит.
Каким, кстати, образом он может WM_KEYDOWN глушить?
tesseract © (30.01.07 22:56) [18]
> $f012
Есть константа с говорящим именем для такой команды.
Есть SC_MOVE = $f010, он немного не так работает. Для уголков константы тоже не описаны - они, помнится, между $f000 и $f010. Могу привести, если надо будет.
tesseract © (31.01.07 10:23) [22]
Описание функции PreTranslateMessage? Оно в хелпе от D7 есть, в Turbo Delphi почему-то нет.
В D7 тоже нет. И в Index"е раздела Platform SDK в MSDN нет. И в Windows.pas не объявлен...
← →
Amoeba © (2007-01-31 15:31) [24]
> ANTPro © (30.01.07 13:01)
>
> Как реализовать на WinAPI перетаскивание контролов(EditBox,
> Button...)?
Ну и приключений ты себе на одно место ищешь. А стоит ли сия овчинка выделки???
← →
ANTPro © (2007-01-31 21:51) [25]> [24] Amoeba © (31.01.07 15:31)
Меня никто не спрашивает. Да и экспы получу много : )
> GrayFace ©
> tesseract ©
Спасибо за ответы.
← →
tesseract © (2007-01-31 22:08) [26]>
> Каким, кстати, образом он может WM_KEYDOWN глушить?
Элементарным, из функции обработки сообщений возвращаем признак того, что сообщение обработано. большинство элементов управления много чего глушит. Столкнулся при программировании под WinCE=Win95.
← →
GrayFace © (2007-02-01 13:16) [27]tesseract © (31.01.07 22:08) [26]
Элементарным, из функции обработки сообщений возвращаем признак того, что сообщение обработано.
Но если мы перекрываем WndProc, то от нас контрол так ничего не скроет. А как иначе можно сообщения ловить? Не делать же хук для этого. Или ты в цикле выборки сообщений это смотрел?
← →
tesseract © (2007-02-01 13:25) [28]
> А как иначе можно сообщения ловить? Не делать же хук для
> этого. Или ты в цикле выборки сообщений это смотрел?
Перекрывал WindowProc - не ловяться клавиши, только через PreTranslateMessage.
← →
GrayFace © (2007-02-01 16:02) [29]А какие клавиши? Речь, видимо, о C++? В MSDN есть упомянания о методе некоторых объектов C++ PreTranslateMessage, но такой функции API не видно.
← →
ANTPro © (2007-02-04 21:12) [30]Перетаскивание заработало, но не хотят таскаться Static Text и ComboBox.
Как заставить их реагировать на события мыши?
← →
ANTPro © (2007-02-09 16:50) [31]Еще раз пасиба всем за саб класс!
Теперь все переделывать :(
Страницы: 1 вся ветка
Текущий архив: 2007.02.25;
Скачать: CL | DM;
Память: 0.52 MB
Время: 0.04 c