Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > WM_NCCreate


Автор: Igor_thief 31.8.2007, 23:39
Имеется следующий код:
Код

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-х углов формы, то курсор, как и должен, меняется на курсор который символизирует что можно менять размер формы, но когда начинаешь плавно двигать курсор по одному из краев формы, то он, напротяжении определенного растояния не меняется на вертикальную/горизонтальную стрелочку для изменения размеров. Как это исправить?
http://img63.imageshack.us/my.php?image=20070831234218bp8.png

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)