Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Окна, стиль и положение (число прочтений - 4792 )
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Окна, стиль и положение
Ответ #15 - 10. Февраля 2019 :: 16:23
Печать  
Djelf писал(а) 10. Февраля 2019 :: 05:10:
У тебя Окна еще где-то двигаются. Поищи где.
Или поставь его на место.


Не не помогает. Нигде справочником не двигаю и при применении Окна.РазмерОкна() измеряемое окно скачет вниз. Как я понимаю кроме измерения функция пытается внести новые размеры окна (в данном случае NULL). Если только Альф не поставил та значения по-умолчанию.

Пока поставил статические корректировки:

ВерхФормы   =  РасшФормы.Верх;
ЛевоФормы   = РасшФормы.Лево;
ШиринаФормы = РасшФормы.Ширина;
ВысотаФормы = РасшФормы.Высота;

param=СоздатьОбъект("Структура");
...
...
param.Вставить("X",ЛевоФормы+10+X);
param.Вставить("Y",ВерхФормы+32+Y+H);
ОткрытьФорму("Обработка.КонтекстноеМеню",param);


hogik писал(а) 10. Февраля 2019 :: 12:37:
Не соответствуют. В модальных окнах можно включить "Панель инструментов". И всё "летит к черту"(с). Подмигивание Координаты экрана можно использовать только для размещения "главного" окна приложения. Всё остальное следует "размещать" в относительных координатах.


Пишу только для себя и в своих формах никогда не применяю ни странную панель инструментов, ни вкладки, топорные, малоинформативные и самое главное имеющие статическое решение.
И вообще если использовать предложенный разработчиками интерфейс 1с77, то возле каждого пользователя необходим "программист" 1с. В общем это и есть формула успеха фирмы 1с.
А иконки просто жесть. А-ля 80-тые.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 571
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Окна, стиль и положение
Ответ #16 - 11. Февраля 2019 :: 10:05
Печать  
recop писал(а) 10. Февраля 2019 :: 16:23:
Как я понимаю кроме измерения функция пытается внести новые размеры окна (в данном случае NULL). Если только Альф не поставил та значения по-умолчанию.


Аааа.... вот оно что. При нулевых или не числовых значениях РазмерОкна(Форма,Ширина,Высота) размер окна не меняется (rect заполняется старыми значениями) но срабатывает центровка.

Код (C++)
Выбрать все
case methWindowSize:
...
pWnd->MoveWindow(&rect);
if(pWnd->IsKindOf(RUNTIME_CLASS(CGetDlg)))
    pWnd->CenterWindow();
 


  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Окна, стиль и положение
Ответ #17 - 12. Февраля 2019 :: 05:44
Печать  
Djelf писал(а) 11. Февраля 2019 :: 10:05:
... размер окна не меняется (rect заполняется старыми значениями) но срабатывает центровка.


И на кой?
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 571
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Окна, стиль и положение
Ответ #18 - 12. Февраля 2019 :: 08:43
Печать  
recop писал(а) 12. Февраля 2019 :: 05:44:
Djelf писал(а) 11. Февраля 2019 :: 10:05:
... размер окна не меняется (rect заполняется старыми значениями) но срабатывает центровка.


И на кой?

Вопрос не по адресу Подмигивание

Предполагаю чтобы модальные окна при изменении их размера были по центру.
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Окна, стиль и положение
Ответ #19 - 12. Февраля 2019 :: 15:24
Печать  
Djelf писал(а) 12. Февраля 2019 :: 08:43:
Предполагаю чтобы модальные окна при изменении их размера были по центру.


Вот и я о том же. Сиди и додумывай, что еще допом вылезет из примененной функции. И вопрос чисто к Альфу: Зачем они нужны по центру, а не там где должны быть, ЦентрироватьОкно() не работает что-ли? Озадачен
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 571
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Окна, стиль и положение
Ответ #20 - 12. Февраля 2019 :: 15:43
Печать  
Затем что это делалось почти 15 лет назад, и не сильно то и нужно оно тогда было. Кто это проверял и тестировал во всех возможных режимах?
А теперь изменять поведение  процедур и функций 15 летней давности уже нельзя.
Исправить ситуацию все таки можно, добавив аналог ПолучитьКоординаты и УстановитьКоординаты для объекта Окна.
Но для твоих хотелок вообще нужно это все расширять, добавив параметр относительно чего вычисляется лево/верх.
Может тебе проще уже свою ВК замутить? Подмигивание
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Окна, стиль и положение
Ответ #21 - 12. Февраля 2019 :: 22:52
Печать  
Djelf писал(а) 12. Февраля 2019 :: 15:43:
... Может тебе проще уже свою ВК замутить? Подмигивание


Из-за двух функций BK мутить? Не силен я в этом уже, да и времени дефицит. Вот если бы иметь исходники, то можно было бы исправлять и дополнять не отрываясь от дел. Только мне все равно не понятно совмещение размера с центровкой. Бред какой-то уже на практике не первый раз сталкиваюсь, что применяя функции класса "Окна" нужно экспериментально тасовать их последовательность, что бы добиться нужного результата. Еще в свое время, когда в далекие 80-е занимался программированием более-менее профессионально (на заре ООП), интересовался чем Си отличается от Паскаля. Так вот, знающий человек объяснил мне что Паскаль это как интеллигентный человек с галстуком, а Си это как шпана оборванная. Мы на Ассемблере боролись за каждый байт пространства и тщательно добивались максимального быстродействия. А что Си-сты, а по фиг отцентрирую, а потом переставлю куда надо...

Спасибо тебе за помощь. Думаю данный вопрос более-менее решен. Допишу класс выложу. Пока откладываю на потом.

Кстати, ненужное центрирование вызывает мелькание формы по предварительным координатам.
« Последняя редакция: 13. Февраля 2019 :: 05:35 - recop »  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1532
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Окна, стиль и положение
Ответ #22 - 13. Февраля 2019 :: 06:23
Печать  
По поводу исходников - нет ничего проще.
Бери на здоровье: https://yadi.sk/d/czJLLuVbglXXRQ
  

FormEx developer
Наверх
www  
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 571
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Окна, стиль и положение
Ответ #23 - 13. Февраля 2019 :: 06:58
Печать  
АЛьФ писал(а) 13. Февраля 2019 :: 06:23:
По поводу исходников - нет ничего проще.
Бери на здоровье: https://yadi.sk/d/czJLLuVbglXXRQ


Ого! оО
Испеклось за 10 минут с учетом перевода на CodeBlock и исправлением каталогов.
А 1с++ так и не удалось приготовить ;(
  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 807
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Окна, стиль и положение
Ответ #24 - 13. Февраля 2019 :: 09:30
Печать  
Может исходники на github выложить?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 571
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Окна, стиль и положение
Ответ #25 - 13. Февраля 2019 :: 10:08
Печать  
АЛьФ Вот она ошибочка. Так нормально работает.

Код (C++)
Выбрать все
case methWindowSize:
...
if(pWnd)
{
    RECT rect;
    pWnd->GetWindowRect(&rect);
-    if(pWnd->IsKindOf(RUNTIME_CLASS(CGetDlg)))
-    pMainWindow->ScreenToClient(&rect);
+   CWnd * pParent = pWnd->GetParent();
+   pParent->ScreenToClient(&rect);

    int w = rect.right - rect.left;
    int h = rect.bottom - rect.top;
 

  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Окна, стиль и положение
Ответ #26 - 14. Февраля 2019 :: 08:21
Печать  
Вот так стимул изучить фигурные скобки и стрелки, которые я всю жизнь избегал! Улыбка Спасибо щедрый Альф.
Только очень прошу ещё подсказать чем эдакое счастье юзать. А то у меня уже была неудачная попытка поработать с исходниками на С++. Оказалось, что нужно было иметь это, то, да ещё вот это, что в конечном итоге Windows 7 уже не кушает. Буду благодарен за ссылочку. Для экспериментов уже психика не та.  Круглые глаза
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1532
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Окна, стиль и положение
Ответ #27 - 14. Февраля 2019 :: 09:55
Печать  
recop писал(а) 14. Февраля 2019 :: 08:21:
Вот так стимул изучить фигурные скобки и стрелки, которые я всю жизнь избегал! Улыбка Спасибо щедрый Альф.
Только очень прошу ещё подсказать чем эдакое счастье юзать. А то у меня уже была неудачная попытка поработать с исходниками на С++. Оказалось, что нужно было иметь это, то, да ещё вот это, что в конечном итоге Windows 7 уже не кушает. Буду благодарен за ссылочку. Для экспериментов уже психика не та.  Круглые глаза


Мммм... По идее надо еще только visual studio 6.0 и пути прописать свои в настройках, но у меня вот она стоит в виртуалке под ХР. Самый простой вариант запуска.
  

FormEx developer
Наверх
www  
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 571
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Окна, стиль и положение
Ответ #28 - 14. Февраля 2019 :: 14:34
Печать  
АЛьФ писал(а) 14. Февраля 2019 :: 09:55:
Мммм... По идее надо еще только visual studio 6.0 и пути прописать свои в настройках, но у меня вот она стоит в виртуалке под ХР. Самый простой вариант запуска.

Мне пришлось еще PSDK 2003 подключить.
Перестало ругаться "NOTE: WINVER has been defined as 0x0500 or greater which enables..."
И ушла ошибка "FormEx.cpp|245|error C2065: 'TME_NONCLIENT' : undeclared identifier"
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Окна, стиль и положение
Ответ #29 - 17. Февраля 2019 :: 21:54
Печать  
Что-то не пойму, Окна.ПоложениеОкна() возвращает координаты относительно рабочей зоны главного окна программы, а устанавливает относительно экрана  Озадачен

Думаю правильно будет если оба действия будут происходить относительно рабочей зоны главного окна программы. Альф, будь добр, очень нужно быстрое решение.

РасширениеФрмы.Лево/Верх - та же самая картина, похоже тема и возникла из-за этой ошибки.

Или ввести дополнительный параметр по образу ПолучитьКоординаты(,,,,0/1).
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать