PDA

Просмотр полной версии : Ищу исходники NoFRAME


mrcrook
14.04.2010, 11:39
Когдато тут была темка NoFRAME Lineage II (Окно без рамки) был скомпилированый код и исходники, сегодня пытался найти тему но так и не нашел если кто знает где искать поделитесь.

Добавлено через 2 часа 45 минут
не падать, пока)

Sherman
14.04.2010, 12:22
WindowsAPI:

var
hWnd:Thandle;
wStyle:Integer;
begin
//ищем окошка
hWnd:=FindWindow(nil,'Lineage II');
//читаем параметр окошка
wStyle:=GetWindowLong(hWnd,GWL_STYLE);
//меняим параметр акошка что бы был без рамке и не изменял размеры
wStyle:=wStyle xor WS_BORDER xor WS_SIZEBOX;
//устанавливаем параметр акошка
SetWindowLong(hWnd,GWL_STYLE,wStyle);
end;


Почти то что нужно ;)
Заставь иго перерисоватсо, и установи координаты верхнего леваго угла в кудатебе нужно, и вот оно - счастье.

mrcrook
14.04.2010, 12:52
хм попробую вечерком) но там вроде были какието проблеммы, не так все просто было.

tgl
14.04.2010, 13:00
вероятно....
GetWindowLong надо звать из адресного пространства л2 иначе будет отказ в доступе (имхо)
После смены стиля бордеров надо звать SetWindowPos с флагом SWP_FRAMECHANGED (по идеии)

Sherman
14.04.2010, 13:46
вероятно....
GetWindowLong надо звать из адресного пространства л2 иначе будет отказ в доступе (имхо)
После смены стиля бордеров надо звать SetWindowPos с флагом SWP_FRAMECHANGED (по идеии)

Собственно, протестированный код:

var
hWnd:THandle;
Value:integer;
wRect:TRect;
begin
hWnd:=FindWindow(nil,'Lineage II');
Value:=GetWindowLong(hWnd,GWL_STYLE);
Value:=Value xor WS_CAPTION xor WS_THICKFRAME;
SetWindowLong(hWnd,GWL_STYLE,Value);
GetWindowRect(hWnd,wRect);
SetWindowPos(hWnd,HWND_TOP,
wRect.Left,
wRect.Top,
wRect.Right-wRect.Left,
wRect.Bottom-wRect.Top,
SWP_FRAMECHANGED);
end;

mrcrook
14.04.2010, 13:51
тесты проходили на клиенте ру офа? с ГГ? без каких либо еще утилит?

Sherman
14.04.2010, 13:52
тесты проходили на клиенте ру офа? с ГГ? без каких либо еще утилит?
ГГ с Инеем могут забивать сообщения на изменение параметров акна ленейки, либо прятать хендл окна ленейке. Протестить на руОФФ клиенте немагу.