Toon posts:

[Delphi] Win API maak window non moving

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een progje waaraan ik een zgn. 'Lock' functie wil toevoegen. Dit betekent dat je het window niet kunt verplaatsen als je met de titelbalk sleept.
Nu heb ik geprobeerd de "WM_MOVING" windowmessage af te vangen, maar dat lukte niet. Ik heb de volgende code gebruikt:
code:
1
2
3
4
5
6
7
8
var Lock:Boolean;

//Gedeelte uit de WindowProc functie

WM_MOVING:begin
         Result:=LRESULT(True);
         if Lock=False then Result:=DefWindowProc(hwnd,message,wParam,lParam );
        end;

Kan iemand me misschien vertellen hoe ik het wel voor elkaar krijg dat een window niet te verplaatsen is????????????

Thanx :) :) :)

Verwijderd

Eigenlijk vrij simpel:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
type
  TForm1 = class(TForm)
  private
    procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message
    WM_NCLBUTTONDOWN;
  public
    { Public declarations }
  end;
[..]
procedure TForm1.WMNCLButtonDown(var Message: TWMNCLButtonDown);
begin
  case Message.HitTest of
    HTCAPTION: ;
  else
    inherited;
  end;
end;

Je moet dan nog wel de 'move' commando uit het system menu halen.

Verwijderd

Topicstarter
Ik heb net de bovenstaande code verwerkt in m'n progje, maar nu heb ik een ander probleem: ik krijg het "Move" item in 't SystemMenu niet gedisabled... :?
Ik heb de volgdende code gebruikt:
code:
1
2
3
4
5
6
7
8
var SysMenu:HMENU;
    Lock:Boolean;

procedure SetSysMenu;
  SysMenu:=GetSystemMenu(win._hwnd,False);
  if Lock=False then EnableMenuItem(SysMenu,SC_MOVE,MF_BYCOMMAND or MF_ENABLED) else
               EnableMenuItem(SysMenu,SC_MOVE,MF_BYCOMMAND or MF_GRAYED);
end;

Thanx :) :) :)

Verwijderd

Disable het in reactie op een WM_INITMENUPOPUP :)

Verwijderd

Topicstarter
Okay, 't werk...

Thanx :) :) :)