我想作QQ提示最新信息的那个窗口,就在在屏幕右下角的那个窗口,我不希望用户能拖动窗口。请大家相助,希望大家能给出完整代码,小弟太菜了。还有怎样得到WINDOWS下面任务栏的高度?

解决方案 »

  1.   

    把Form的BorderStyle设置为bsNone,即没有标题栏和边框
    Screen.WorkAreaHeight和Screen.WorkAreaWidth分别对应桌面的工作区域的高度和宽度,如果任务栏不是自动隐藏的,则WorkArea所代表的区域是整个屏幕的区域减去任务栏的区域
      

  2.   

    我不能把窗口的BorderStyle设置为bsNone,因为这样我就不能让用户控制窗口的关闭,我是希望用户能关闭窗口的
      

  3.   

    移动窗体的时候会给窗体发送WM_WINDOWPOSCHANGING, WM_WINDOWPOSCHANGED, WM_MOVE, WM_SIZE, 
    WM_NCCALCSIZE消息可以重载其中一个消息处理函数, 然后把位置改回原来的位置  TForm1 = class(TForm)
      private
        { Private declarations }
        procedure OnMOVE(var Msg : TWMMove);message WM_Move;
    ......
    procedure TForm1.OnMOVE(var Msg: TWMMove);
    begin
        if (Self.Top <>0) or (Self.Left<>0) then
        begin
           //限制为左上角,不过拖动的时候屏幕会闪烁
           Self.Top:=0;
           Self.Left := 0;
        end;
    end;
      

  4.   

    Form.OnCreate
    RemoveMenu(GetSystemMenu(handle,false), SC_MOVE, MF_BYCOMMAND);