我写了一个VCL,在它的Create方法中调用了
ShowWindow(Application.Handle,SW_HIDE);
可程序没有从任务栏隐藏,
在TForm的Create方法中调用 
ShowWindow(Application.Handle,SW_HIDE);
也不能从任务栏隐藏,
但是在TForm中加一个TButton,在TButton的OnClick事件中调用
ShowWindow(Application.Handle,SW_HIDE);
可以从任务栏隐藏
在TForm的Create方法中可得知此时TApplication是inVisible的
也就是说在Application.Run之前调用
ShowWindow(Application.Handle,SW_HIDE);
都不能将程序没有从任务栏隐藏,
那我的这个VCL在什么时候调用
ShowWindow(Application.Handle,SW_HIDE);
才合适呢?

解决方案 »

  1.   

    应该加在onShow这里。祝:身体健康!!
      

  2.   

    捕获TApplication的WM_ACTIVATEAPP事件就可成功!
    还有我捕获WM_SHOWWINDOW后调用却没有成功!
    因为我写的是VCL,要控制整个程序在任务栏的显示,就不能直接用OnShow,要是它把这个组件扔在非MainForm里怎么办,只有用捉TApplication的消息了。
    TApplication是没有OnShow的,因为它是一个隐藏的窗口。
      

  3.   

    注意WIndows窗口的创建历程:
        OnCreate
        OnShow
        OnActive
        OnResize
        OnPaint
    所以,不能在Create方法中使用它! 而要在Create方法调用完成之后!