Посл.ответ |
Сообщение |
 Ранг: 533.6 (!), 232thx Активность: 0.45↘0 Статус: Uploader retired
|
Создано: 28 декабря 2008 17:59 · Личное сообщение · #1
В програме есть окно которое не должно двигатся, т.е. при попытке перетащить его мышкой(или каким нибудь другим способом) оно не реагировало на это сообщение.
----- Лучше быть одиноким, но свободным © $me | Сообщение посчитали полезным: |
|
 Ранг: 355.4 (мудрец), 55thx Активность: 0.32↘0 Статус: Uploader 5KRT
|
Создано: 28 декабря 2008 18:07 · Поправил: coderess · Личное сообщение · #2
Создай окно как Popup, например в Visual C++, я просто у диалога меняю свойство Style
и окно не двигается. Сейчас в Delphi посмотрел если убрать все галочки с BorderIcons и
выставить в свойстве BorderStyle=bsNone, то окно не двигается.
EnableWindow( hWnd, FALSE );
P.S: Опередили
Также можно создать с помощью CreateWindow(Ex) с флагом WS_DISABLED или же послать его
----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes | Сообщение посчитали полезным: |
 Ранг: 110.8 (ветеран), 104thx Активность: 0.09↘0.01 Статус: Участник
|
Создано: 28 декабря 2008 18:12 · Личное сообщение · #3
EnableWindow
| Сообщение посчитали полезным: |
 Ранг: 533.6 (!), 232thx Активность: 0.45↘0 Статус: Uploader retired
|
Создано: 28 декабря 2008 18:29 · Личное сообщение · #4
мне нужно чтобы окно могло получать фокус
----- Лучше быть одиноким, но свободным © $me | Сообщение посчитали полезным: |
 Ранг: 340.0 (мудрец), 22thx Активность: 0.12↘0 Статус: Участник THETA
|
Создано: 28 декабря 2008 19:45 · Личное сообщение · #5
borov пишет:
В програме есть окно которое не должно двигатся, т.е. при попытке перетащить его мышкой
Попробуй захватить мышь через SetCapture
----- Программист SkyNet | Сообщение посчитали полезным: |
 Ранг: 271.6 (наставник), 2thx Активность: 0.3↘0 Статус: Участник
|
Создано: 28 декабря 2008 21:07 · Личное сообщение · #6
borov
А если так:
WM_MOUSEHOVER:
If Form.Top<>xxx and Form.Left<>yyy...
----- iNTERNATiONAL CoDE CReW | Сообщение посчитали полезным: |
Ранг: 51.5 (постоянный), 16thx Активность: 0.04↘0.01 Статус: Участник
|
Создано: 28 декабря 2008 21:47 · Личное сообщение · #7
в ВБ у формы есть свойство Moveable, ставим в фолс и окно нормально получает фокус но не перемещается.
| Сообщение посчитали полезным: |
Ранг: 101.0 (ветеран), 344thx Активность: 1.15↘0 Статус: Участник
|
Создано: 28 декабря 2008 21:50 · Поправил: progopis · Личное сообщение · #8
mushr00m
Молодец. Только у топикстартера Delphi. И тема называется "...(API)".
borov пишет:
мне нужно чтобы окно могло получать фокус
По-моему никак. Только если суперкласс сделать, и то не факт. Тут ещё двигать динамически предлагают - жесть, но тоже вариант. Вообще можно ещё заголовок у окна вынести - такую форму двигать не получится...
Добавлено:
mushr00m
Ты издеваешься? Ещё раз прошу обратить твое внимание на название темы - API!!!!!
Spirit пишет:
как это?
не делать его
| Сообщение посчитали полезным: |
 Ранг: 271.6 (наставник), 2thx Активность: 0.3↘0 Статус: Участник
|
Создано: 28 декабря 2008 21:54 · Личное сообщение · #9
progopis пишет:
Только у топикстартера Delphi
Возможно и асм...
progopis пишет:
Вообще можно ещё заголовок у окна вынести - такую форму двигать не получится
Как это?
----- iNTERNATiONAL CoDE CReW | Сообщение посчитали полезным: |
Ранг: 51.5 (постоянный), 16thx Активность: 0.04↘0.01 Статус: Участник
|
Создано: 28 декабря 2008 22:00 · Личное сообщение · #10
progopis пишет:
Только у топикстартера Delphi.
ну я не вижу где у него это написано!
но раз уж так и есть то можно попробовать это:
www.google.ru/search?hl=ru&q=non+Moveable+form+delphi+API&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq=
| Сообщение посчитали полезным: |
 Ранг: 340.0 (мудрец), 22thx Активность: 0.12↘0 Статус: Участник THETA
|
Создано: 28 декабря 2008 22:08 · Личное сообщение · #11
Spirit пишет:
Как это?
Видимо, без стиля окна WS_CAPTION. Тогда если не включить его придительное перетаскивание (например, через обработчик события WM_LBUTTONDOWN), то окно будет "висеть".
----- Программист SkyNet | Сообщение посчитали полезным: |
Ранг: 101.0 (ветеран), 344thx Активность: 1.15↘0 Статус: Участник
|
Создано: 28 декабря 2008 22:12 · Поправил: progopis · Личное сообщение · #12
FrenFolio
+1
А если всё-таки надо дать возможность его перетаскивания, то сделать этот самый обработчик. В нём уже решать - двигать или не двигать. Реализация такого на масме у меня есть.
| Сообщение посчитали полезным: |
 Ранг: 533.6 (!), 232thx Активность: 0.45↘0 Статус: Uploader retired
|
Создано: 28 декабря 2008 22:53 · Личное сообщение · #13
progopis, давай посмотрю
А вобще на Delphi, но можно и на другом, главное чтобы реализация была на API
----- Лучше быть одиноким, но свободным © $me | Сообщение посчитали полезным: |
Ранг: 38.2 (посетитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 28 декабря 2008 23:02 · Личное сообщение · #14
Функция окна должна перехватывать сообщения WM_SIZE, WM_MOVE, WM_SIZING, WM_MOVING, а может и другие, и не посылать их далее на DefWindowProc. Если это диалог без DefWindowProc (стандартный), то придется ставить хук и перехватывать эти сообщения или запоминать свое положение и при изменении его вызывать MoveWindow. Так мне кажется. Только это не все. Делать это надо когда окно определилось со своим положением, приняла его за приемлемое для удержания, т.е. - делать это черз некоторое время после создания окна.
| Сообщение посчитали полезным: |
 Ранг: 533.6 (!), 232thx Активность: 0.45↘0 Статус: Uploader retired
|
Создано: 28 декабря 2008 23:43 · Поправил: borov · Личное сообщение · #15
mushr00m, спасибо за ссылку в гугл, нашел то что нужно.
Вот моя реализация на API(кому интересно):
----- Лучше быть одиноким, но свободным © $me | Сообщение посчитали полезным: |
 Ранг: 533.6 (!), 232thx Активность: 0.45↘0 Статус: Uploader retired
|
Создано: 06 января 2009 17:00 · Личное сообщение · #16
Кто знает как при нажатии на кнопку сворачивания окна(либо посылки окну сообщения свернутся) окно ни как не реагировало на это сообщение(кнопка свернуть активна и видна)
----- Лучше быть одиноким, но свободным © $me | Сообщение посчитали полезным: |
Ранг: 222.2 (наставник), 115thx Активность: 0.14↘0.01 Статус: Участник
|
Создано: 06 января 2009 17:08 · Поправил: HandMill · Личное сообщение · #17
borov SW_MINIMIZE ?
простейшее:
case SW_MINIMIZE:
{
ShowWindow(hwnd,SW_SHOWNORMAL);
}break;
дальше - в глубь копни насчёт обработки этого сообщения и пропатчи процедуру (ух какое сука зверство xD).
----- все багрепорты - в личные сообщения | Сообщение посчитали полезным: |
 Ранг: 533.6 (!), 232thx Активность: 0.45↘0 Статус: Uploader retired
|
Создано: 06 января 2009 17:17 · Поправил: borov · Личное сообщение · #18
то что в ShowWindow используется это я знаю, но как его отловить, какой это параметр и какого сообщения?
----- Лучше быть одиноким, но свободным © $me | Сообщение посчитали полезным: |
Ранг: 3.0 (гость) Активность: 0=0 Статус: Участник
|
Создано: 06 января 2009 18:05 · Личное сообщение · #19
borov
if(msg == WM_SHOWWINDOW && !lParam)
?
| Сообщение посчитали полезным: |
Ранг: 203.3 (наставник) Активность: 0.22↘0 Статус: Участник UPX Killer -d
|
Создано: 07 января 2009 00:43 · Личное сообщение · #20
Если на чистом WinAPI, то правильно подсказали насчет DefWindowProc.
Ещё там есть разница, по выходу из сообственной оконной процедуры возвращать системе 0 или нет: Result := 0;
Таким образом можно сделать, что окно будет висеть на идном месте и перестанет реагировать на сообщения минимизации, закрытия (по крестику), передвигания и т.п.
Оконную процедуру надо копать.
----- Я медленно снимаю с неё UPX... *FF_User* | Сообщение посчитали полезным: |
 Ранг: 756.3 (! !), 113thx Активность: 0.61↘0.05 Статус: Участник Student
|
Создано: 07 января 2009 00:50 · Личное сообщение · #21
borov
А при перемещении основного окна, это окно должно двигаться с ним или тоже на месте оставаться???
Я просто идею никак не уловлю, зачем это?
----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh | Сообщение посчитали полезным: |
 Ранг: 533.6 (!), 232thx Активность: 0.45↘0 Статус: Uploader retired
|
Создано: 07 января 2009 01:17 · Личное сообщение · #22
Isaev пишет:
А при перемещении основного окна, это окно должно двигаться с ним
Как бы да: borov пишет:
WM_WINDOWPOSCHANGING:
begin
PWindowPos(lParam)^.x := RectMain.Left + 207;
PWindowPos(lParam)^.y := RectMain.Top + 83;
end;
Isaev пишет:
Я просто идею никак не уловлю, зачем это?
это для проги которая напоминает редактор/конструкор диалогов, и мне нужно чтобы окошко которое какбы создается выглядело как полнофункциональное окно но не реагировало ни начто, я сделал чтобы не реагировало на закрытие окна, но на минимизацию не знаю как.
----- Лучше быть одиноким, но свободным © $me | Сообщение посчитали полезным: |
Ранг: 63.8 (постоянный), 2thx Активность: 0.03↘0 Статус: Участник
|
Создано: 07 января 2009 12:07 · Поправил: drin · Личное сообщение · #23
перехватывать WM_NCHITTEST и возвращать всегда HTCLIENT
единственный минус - кнопки на caption будут не нажимаемыми
| Сообщение посчитали полезным: |
Ранг: 17.7 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 13 января 2009 16:22 · Личное сообщение · #24
Ха, я это помню!  Да, жестоко мне тогда пришлось) Щас я тебе исходник выложу)
| Сообщение посчитали полезным: |
Ранг: 17.7 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 13 января 2009 16:58 · Поправил: zombiee · Личное сообщение · #25
Держи) Я там пару комментов поставил, посмотришь)))
Если что-то не так пойдёт, отпишись)
Компилятор: Dev-C++ [mingv (он же gcc)]
Написано на чистом апи)))
f018_13.01.2009_CRACKLAB.rU.tgz - ArtPass.rar
| Сообщение посчитали полезным: |
 Ранг: 533.6 (!), 232thx Активность: 0.45↘0 Статус: Uploader retired
|
Создано: 13 января 2009 17:40 · Личное сообщение · #26
zombiee, у меня при компиляции выдает такую ошибку: D:\...\ArtPass\Makefile.win [Build Error] ["Art] Error 1
----- Лучше быть одиноким, но свободным © $me | Сообщение посчитали полезным: |
Ранг: 17.7 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 13 января 2009 17:55 · Личное сообщение · #27
to borov:
Стукани в асю, осудим точнее, тут флудить не стоит)
| Сообщение посчитали полезным: |
Ранг: 17.7 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 13 января 2009 18:01 · Личное сообщение · #28
Хм... Даж не заю, чё это) по ходу, он библиотеки найти не может) кинь папку ArtPass в C:\Dev-Cpp\proj\ (Путь до файла проекта должен быть C:\Dev-Cpp\proj\ArtPass\Art Pass.dev)
и попробуй скомпилить)
| Сообщение посчитали полезным: |
Ранг: 17.7 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 13 января 2009 18:07 · Поправил: zombiee · Личное сообщение · #29
Всё, нашёл голюк) Это из-за относительных путей. Клацай Ctrl+P, вкладка Параметры (4-ая) и в компонировщик впиши это:
Только сотри сперва
и будет тебе счастье)
З.Ы: ПУТЬ_ДО_ПАПКИ_ДЕВА - путь до папки компиля) например, C:\Dev-C++\ (у меня)
А у тебя он по ходу D:\Dev-C++\
| Сообщение посчитали полезным: |
 Ранг: 533.6 (!), 232thx Активность: 0.45↘0 Статус: Uploader retired
|
Создано: 13 января 2009 19:04 · Личное сообщение · #30
все исправил, и вправду все проблемы были из-за того что нужно было путя поменять с относительного на прямой, но это я уже сделал, вот так это будет выглядеть на сях:
в даный момент меня интересует другое: borov пишет:
мне нужно чтобы окошко выглядело как полнофункциональное окно, но не реагировало на минимизацию
----- Лучше быть одиноким, но свободным © $me | Сообщение посчитали полезным: |