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

FormBorderStyle


Thorvardr

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

Нет, нет. Все уже придумано до нас. Сама по себе опция, которая либо убирает рамку у окна, либо ее не убирает, - это уже фундамент, которым просто надо воспользоваться. По сути это все тоже самое, решение осуществлено именно путем смены типа 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
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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