Перейти к содержанию
Asterios

FormBorderStyle


Thorvardr

Рекомендуемые сообщения

Хотел тему создать в разделе "Предложения", а оказалось, что надо быть писателем со стажем. Ну да ладно, создам тут, надеюсь, модератор поймет и переместит туда.

В настоящий момент имеется способ лишить окно клиента рамки (ключ UseWindowFrame в asterios.ini).

Если это возможно, давайте еще в этом направлении поработаем. Пусть рамка будет! Но окно пусть будет неизменяемого размера. Суть в том, что рамка позволяет удобно перемещать окно, сворачивать его, разворачивать при использовании всего лишь мыши. Но иногда бывает так, что случайно "хватаешь" мышкой за кромку окна и любое шевеление в сторону меняет его размер, происходит перерисовка с двухсекундной паузой и отображением черного окна. Пусть это будет тоже настраиваемо, т.к. не исключаю, что есть люди, играющие на нестандартных размерах клиента.

В .Net решение достигается изменением свойства окна FormBorderStyle, где допустимые значения такие:

None - это как раз тот вариант, который реализован как UseWindowFrame=False, то есть окно без рамки

FixedSingle или FixedSingle3D - это то что я прошу, у окна имеется рамка, оно может быть перемещено по экрану, свернуто, развернуто, закрыто, но опция изменения его размера путем захватывания за край рамки недоступна

Sizable - это то, как выглядит окно клиента обычно

 

Ссылка на комментарий
Поделиться на другие сайты

не думаю, что это целесообразно, т.к. приедтся перехватывать кучу сообщений винды, плюс править ехе-файл и делать иньекции дополнительных функций

Ссылка на комментарий
Поделиться на другие сайты

  В 16.09.2014 в 06:26, MiseryMachine сказал:

не думаю, что это целесообразно, т.к. приедтся перехватывать кучу сообщений винды, плюс править ехе-файл и делать иньекции дополнительных функций

Нет, нет. Все уже придумано до нас. Сама по себе опция, которая либо убирает рамку у окна, либо ее не убирает, - это уже фундамент, которым просто надо воспользоваться. По сути это все тоже самое, решение осуществлено именно путем смены типа Border-а. Надо лишь вместо двух возможных вариантов выбора дать еще один. По идее, это можно сделать прямо на лету с помощью какой нибудь примочки типа Winspector, но тут так трепетно относятся к целостности клиентской части, что за безобидный эксперимент можно словить бан, так что я лучше предложение напишу, а разработчик пусть хотя бы прочтет.

Ссылка на комментарий
Поделиться на другие сайты

  В 16.09.2014 в 06:38, Thorvardr сказал:

Нет, нет. Все уже придумано до нас. Сама по себе опция, которая либо убирает рамку у окна, либо ее не убирает, - это уже фундамент, которым просто надо воспользоваться. По сути это все тоже самое, решение осуществлено именно путем смены типа Border-а. Надо лишь вместо двух возможных вариантов выбора дать еще один. По идее, это можно сделать прямо на лету с помощью какой нибудь примочки типа Winspector, но тут так трепетно относятся к целостности клиентской части, что за безобидный эксперимент можно словить бан, так что я лучше предложение напишу, а разработчик пусть хотя бы прочтет.

не все так просто. тип границы окна задается при создании этого окна.

 

HWND WINAPI CreateWindow(
  _In_opt_  LPCTSTR lpClassName,
  _In_opt_  LPCTSTR lpWindowName,
  _In_      DWORD dwStyle,
  _In_      int x,
  _In_      int y,
  _In_      int nWidth,
  _In_      int nHeight,
  _In_opt_  HWND hWndParent,
  _In_opt_  HMENU hMenu,
  _In_opt_  HINSTANCE hInstance,
  _In_opt_  LPVOID lpParam
); 

где dwStyle задается комбинацией из http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx

 

эту функцию надо перехватывать путем иньекции в процесс линейки дллки с написанной своей функцией с возможностью выбора параметра рамки окна

Изменено пользователем MiseryMachine
Ссылка на комментарий
Поделиться на другие сайты

  В 16.09.2014 в 07:09, MiseryMachine сказал:

эту функцию надо перехватывать путем иньекции в процесс линейки дллки с написанной своей функцией с возможностью выбора параметра рамки окна

Изменено пользователем Thorvardr
Ссылка на комментарий
Поделиться на другие сайты

  В 16.09.2014 в 07:49, Thorvardr сказал:

Да, но оно уже реализовано. Ведь Антон написал (или это стандартный функционал?) перехват для удаления стиля WS_BORDER, тут все тоже самое, только надо WS_THICKFRAME так же убирать. Отправлю flash-ролик личным сообщением. Не для общего обзора оно, а то полезет народ куда не надо.

Не совсем так, эта опция уже была в клиенте, на сколько я помню (в L2.ini) и он просто перенес ее в Asterios.ini для удобства.

Но сделать наверное может, если захочет :)

Ссылка на комментарий
Поделиться на другие сайты

Ах как было бы замечательно если бы ещё можно было изменять параметры системного чата. А то это могут делать лишь единицы и делиться познаниями обхода защиты не торопятся.

Ссылка на комментарий
Поделиться на другие сайты

  В 16.09.2014 в 06:26, MiseryMachine сказал:

не думаю, что это целесообразно, т.к. приедтся перехватывать кучу сообщений винды, плюс править ехе-файл и делать иньекции дополнительных функций

у нас и так клиент весть патченый перепатченый, на данный момент уже более сотни патчей, так что одним больше одним меньше... :)

  В 16.09.2014 в 08:28, Admin сказал:

Но сделать наверное может, если захочет :)

это не сложно, так что я если не забуду сделаю эту опцию WindowFixedSize в новом клиенте

Ссылка на комментарий
Поделиться на другие сайты

  В 16.09.2014 в 08:28, Admin сказал:

Не совсем так, эта опция уже была в клиенте, на сколько я помню (в L2.ini) и он просто перенес ее в Asterios.ini для удобства.

Но сделать наверное может, если захочет :)

было бы неплохо еще вынести в Asterios.ini часть настроек, ответственных за более глубокое ковыряние в графике и некоторых параметрах сети (объем буферов всяких и подобное)

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...