Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WM_NCCreate, Внутренний размер формы 
:(
    Опции темы
Igor_thief
Дата 31.8.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 12.9.2006
Где: Украина

Репутация: нет
Всего: нет



Имеется следующий код:
Код

type
  TForm4 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  protected
    procedure WMNCCreate(var Message: TWMNCCreate); message WM_NCCREATE;
    procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE;
  end;

var
  Form4: TForm4;
  TitleBarSize: LongInt;

implementation

{$R *.dfm}

{ TForm4 }

procedure TForm4.WMNCCalcSize(var Message: TWMNCCalcSize);
begin
end;

procedure TForm4.WMNCCreate(var Message: TWMNCCreate);
var
  dwStyle: longint;
begin
  TitleBarSize := (GetSystemMetrics(SM_CYCAPTION) div 2) + 1;
  dwStyle := GetWindowLong(Handle, GWL_STYLE);
//  dwStyle := dwStyle or WS_SMALLTITLEBAR;
  if (dwStyle and WS_DLGFRAME) = WS_DLGFRAME then
    dwStyle := dwStyle and not longint(WS_DLGFRAME);
  dwStyle := dwStyle and not (WS_BORDER);
  SetWindowLong(Handle, GWL_STYLE, dwStyle);

  inherited;  {Call default processing.}
end;


Все выше указанное делается для того, чтобы убрать у формы заголовок и при этом иметь возможность изменять размеры формы при помощи мыши. Но наткнулся на один нюанс. Если теперь навести курсор мыши на один из 4-х углов формы, то курсор, как и должен, меняется на курсор который символизирует что можно менять размер формы, но когда начинаешь плавно двигать курсор по одному из краев формы, то он, напротяжении определенного растояния не меняется на вертикальную/горизонтальную стрелочку для изменения размеров. Как это исправить?
[img=http://img63.imageshack.us/img63/9966/20070831234218bp8.th.png]
--------------------
В каждом из нас спит гений, и с каждым днем все крепче ...delphigeek.blogspot.com | www.iskomorokh.com 
PM MAIL WWW ICQ YIM MSN   Вверх
try_to_get
Дата 1.9.2007, 19:32 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 426
Регистрация: 19.3.2007
Где: Россия

Репутация: нет
Всего: 2



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


--------------------
Алгоритм не роскошь, а средство достижения цели!
user posted image
PM MAIL   Вверх
Igor_thief
Дата 2.9.2007, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 12.9.2006
Где: Украина

Репутация: нет
Всего: нет



Цитата(try_to_get @  1.9.2007,  18:32 Найти цитируемый пост)
Igor_thief, В Делфи у готовых форм vcl уже все курсоры где нужно установлены.
Видимо ваш код изменил стандартную форму и теперь вам нужно самому написать код установки нужного курсора, например при изменение размера, такой курсор и т.д. 

За ответ конечно спасибо, но вы не правы.

Есть еще варианты?
--------------------
В каждом из нас спит гений, и с каждым днем все крепче ...delphigeek.blogspot.com | www.iskomorokh.com 
PM MAIL WWW ICQ YIM MSN   Вверх
BaD_SeCt0R
Дата 4.9.2007, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 3
Всего: 18



Хех... Пока ничо в голову кроме совета обработать WM_NCMOUSEMOVE не приходит.


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
greenpc
Дата 4.9.2007, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.1.2007

Репутация: нет
Всего: нет



а такой вариант подойдет ?
Код

public
procedure CreateParams(var Params: TCreateParams); override;
---------
procedure TForm1.Createparams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
    Style := (Style or WS_POPUP) and (not WS_DLGFRAME);
end;


PM   Вверх
BaD_SeCt0R
Дата 4.9.2007, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 3
Всего: 18



Цитата(greenpc @  4.9.2007,  07:53 Найти цитируемый пост)
а такой вариант подойдет ?


не работает твой вариант...


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
greenpc
Дата 5.9.2007, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.1.2007

Репутация: нет
Всего: нет



BaD_SeCt0R, проверь
borderstyle :=bsSizeable;
все работает (XP SP2 лицензия, D7 лицензия)
или так
Код

procedure TForm1.CapClose;
var
  dwStyle: Longint;
begin
  if BorderStyle=bsNone then
    Exit;
  dwStyle:=GetWindowLong(Handle, GWL_STYLE);
  if (dwStyle and WS_CAPTION)=WS_CAPTION then
  begin
    case BorderStyle of
      bsSingle, bsSizeable:
        SetWindowLong(Handle, GWL_STYLE, dwStyle and (not WS_CAPTION) or WS_BORDER);
      bsDialog:
        SetWindowLong(Handle, GWL_STYLE, dwStyle and
        (not WS_CAPTION) or DS_MODALFRAME or WS_DLGFRAME);
    end;
    Height:=Height-GetSystemMetrics(SM_CYCAPTION);
    Refresh;
  end;
end;





Это сообщение отредактировал(а) greenpc - 5.9.2007, 08:02
PM   Вверх
BaD_SeCt0R
Дата 5.9.2007, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 3
Всего: 18



Цитата(greenpc @  5.9.2007,  07:53 Найти цитируемый пост)
borderstyle :=bsSizeable;
все работает (XP SP2 лицензия, D7 лицензия)


greenpc, все то же самое, бордер убираеться, но проблема с курсором на углах остается. Имхо, баг какой-то...


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
greenpc
Дата 5.9.2007, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.1.2007

Репутация: нет
Всего: нет



BaD_SeCt0R, 
а эти процедуры выкинул ?
Код

protected
    procedure WMNCCreate(var Message: TWMNCCreate); message WM_NCCREATE;
    procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE;



PM   Вверх
BaD_SeCt0R
Дата 5.9.2007, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 3
Всего: 18



Цитата(greenpc @  5.9.2007,  08:59 Найти цитируемый пост)
а эти процедуры выкинул ?


Ессессьвенно! Еще пока головой думаю smile


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Yanis
Дата 7.9.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



По моим наблюдением такое поведение типично для большинства окон Windows. Ничего смертельного в этом нет.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
BaD_SeCt0R
Дата 7.9.2007, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 3
Всего: 18



Цитата(Yanis @  7.9.2007,  18:09 Найти цитируемый пост)
По моим наблюдением такое поведение типично для большинства окон Windows. Ничего смертельного в этом нет.

Смертельного, конечно, нет, но неприятно все-таки... Ты сам бы какое решение предложил?


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Yanis
Дата 10.9.2007, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



Цитата(BaD_SeCt0R @  7.9.2007,  20:29 Найти цитируемый пост)
Ты сам бы какое решение предложил?

Не извращаться smile


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.