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

Вниз

Редактор форм   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.049 c
15-1170156228
Calibr
2007-01-30 14:23
2007.02.25
Вопрос по HTML?


15-1170186746
hmmm
2007-01-30 22:52
2007.02.25
PHP +HTML :) не пинайте


15-1170614636
hmmm
2007-02-04 21:43
2007.02.25
RSDN


15-1170667944
pasha_golub
2007-02-05 12:32
2007.02.25
Визуализация сортировки


2-1170915793
shaman!
2007-02-08 09:23
2007.02.25
Управление другим приложением





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский