在小程序中有二个form,启动时在托盘上加个图标,单击(右击)显示form2,左击弹出菜单,有一项是'打开',同样是显示form2----(form2.show);1.为什么右击时显示的form2是'标题灰显'--没有得到焦点,而点弹出菜单的'打开'显示的form2确有焦点?2.如果让form2显示在前边---用
setwindowpos(form2.Handle,HWND_TOPmost,Self.Left ,Self.Top,Self.Width,Self.Height,SWP_SHOWWINDOW);
  或重载:
procedure tform2.CreateParams(var Params:TCreateParams);
begin
  inherited;
  With Params do
  begin
    wndParent:=GetDesktopwindow;
    ExStyle:=ExStyle or WS_EX_TOPMOST;
  end;
end;
 
    问题来了,在form2上点一按钮,出一个信息提示(showmessage('sfsdfs');)
这时form2不响应任何操作,但如果不让此form2显示在最上边,就没有这个问题,为什么啊?请帮忙看看,谢!

解决方案 »

  1.   

    用 setforegroundwindow(form2.handle)或
    showwindow(form2.handle,SW_SHOWNORMAL)
    试试
      

  2.   

    单击(右击)的事件中写 左击弹出菜单,有一项是'打开',该项的执行
      
    bringWindowsToTop(Form2.handle);
      

  3.   

    用 yang6130(2.5G)的方法,解决了第一个问题,窗体有了焦点,(但不能总在上方,避免了第二个问题)to zfpcb(我是你的传说) :你能说清楚点吗,你是说击'打开'时除了执行了  form2.show执行了bringWindowsToTop(Form2.handle);谢谢各位!   问题基本解决,不过希望大家能讨论一下为什么会那二个问题,尤其是第二个问题!