![]() |
eXeL@B —› Программирование —› Как заставить форму не двигатся? (API) |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 28 декабря 2008 17:59 · Личное сообщение · #1 |
|
Создано: 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 ![]() |
|
Создано: 28 декабря 2008 18:12 · Личное сообщение · #3 |
|
Создано: 28 декабря 2008 18:29 · Личное сообщение · #4 |
|
Создано: 28 декабря 2008 19:45 · Личное сообщение · #5 |
|
Создано: 28 декабря 2008 21:07 · Личное сообщение · #6 |
|
Создано: 28 декабря 2008 21:47 · Личное сообщение · #7 |
|
Создано: 28 декабря 2008 21:50 · Поправил: progopis · Личное сообщение · #8 mushr00m Молодец. Только у топикстартера Delphi. И тема называется "...(API)". borov пишет: мне нужно чтобы окно могло получать фокус По-моему никак. Только если суперкласс сделать, и то не факт. Тут ещё двигать динамически предлагают - жесть, но тоже вариант. Вообще можно ещё заголовок у окна вынести - такую форму двигать не получится... Добавлено: mushr00m Ты издеваешься? Ещё раз прошу обратить твое внимание на название темы - API!!!!! Spirit пишет: как это? не делать его ![]() ![]() |
|
Создано: 28 декабря 2008 21:54 · Личное сообщение · #9 |
|
Создано: 28 декабря 2008 22:00 · Личное сообщение · #10 |
|
Создано: 28 декабря 2008 22:08 · Личное сообщение · #11 |
|
Создано: 28 декабря 2008 22:12 · Поправил: progopis · Личное сообщение · #12 |
|
Создано: 28 декабря 2008 22:53 · Личное сообщение · #13 |
|
Создано: 28 декабря 2008 23:02 · Личное сообщение · #14 Функция окна должна перехватывать сообщения WM_SIZE, WM_MOVE, WM_SIZING, WM_MOVING, а может и другие, и не посылать их далее на DefWindowProc. Если это диалог без DefWindowProc (стандартный), то придется ставить хук и перехватывать эти сообщения или запоминать свое положение и при изменении его вызывать MoveWindow. Так мне кажется. Только это не все. Делать это надо когда окно определилось со своим положением, приняла его за приемлемое для удержания, т.е. - делать это черз некоторое время после создания окна. ![]() |
|
Создано: 28 декабря 2008 23:43 · Поправил: borov · Личное сообщение · #15 |
|
Создано: 06 января 2009 17:00 · Личное сообщение · #16 |
|
Создано: 06 января 2009 17:08 · Поправил: HandMill · Личное сообщение · #17 |
|
Создано: 06 января 2009 17:17 · Поправил: borov · Личное сообщение · #18 |
|
Создано: 06 января 2009 18:05 · Личное сообщение · #19 |
|
Создано: 07 января 2009 00:43 · Личное сообщение · #20 Если на чистом WinAPI, то правильно подсказали насчет DefWindowProc. Ещё там есть разница, по выходу из сообственной оконной процедуры возвращать системе 0 или нет: Result := 0; Таким образом можно сделать, что окно будет висеть на идном месте и перестанет реагировать на сообщения минимизации, закрытия (по крестику), передвигания и т.п. Оконную процедуру надо копать. ----- Я медленно снимаю с неё UPX... *FF_User* ![]() |
|
Создано: 07 января 2009 00:50 · Личное сообщение · #21 |
|
Создано: 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 ![]() |
|
Создано: 07 января 2009 12:07 · Поправил: drin · Личное сообщение · #23 перехватывать WM_NCHITTEST и возвращать всегда HTCLIENT Code:
единственный минус - кнопки на caption будут не нажимаемыми ![]() |
|
Создано: 13 января 2009 16:22 · Личное сообщение · #24 |
|
Создано: 13 января 2009 16:58 · Поправил: zombiee · Личное сообщение · #25 Держи) Я там пару комментов поставил, посмотришь))) ![]() Если что-то не так пойдёт, отпишись) Компилятор: Dev-C++ [mingv (он же gcc)] Написано на чистом апи))) ![]() ![]() |
|
Создано: 13 января 2009 17:40 · Личное сообщение · #26 |
|
Создано: 13 января 2009 17:55 · Личное сообщение · #27 |
|
Создано: 13 января 2009 18:01 · Личное сообщение · #28 |
|
Создано: 13 января 2009 18:07 · Поправил: zombiee · Личное сообщение · #29 Всё, нашёл голюк) Это из-за относительных путей. Клацай Ctrl+P, вкладка Параметры (4-ая) и в компонировщик впиши это: Code:
Только сотри сперва Code:
и будет тебе счастье) З.Ы: ПУТЬ_ДО_ПАПКИ_ДЕВА - путь до папки компиля) например, C:\Dev-C++\ (у меня) А у тебя он по ходу D:\Dev-C++\ ![]() |
|
Создано: 13 января 2009 19:04 · Личное сообщение · #30 все исправил, и вправду все проблемы были из-за того что нужно было путя поменять с относительного на прямой, но это я уже сделал, вот так это будет выглядеть на сях: Code:
в даный момент меня интересует другое: borov пишет: мне нужно чтобы окошко выглядело как полнофункциональное окно, но не реагировало на минимизацию ----- Лучше быть одиноким, но свободным © $me ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Программирование —› Как заставить форму не двигатся? (API) |