• 您的位置我爱Aspx >> VC.Net >> VB的ShowInTaskbar功能分析以及用VC的实现
  • VB的ShowInTaskbar功能分析以及用VC的实现

  • 作者:aspxer  来源:internet  日期:2007-5-21 23:48:33  关键字:
  • VB的ShowInTaskbar功能分析以及用VC的实现

    VB中想要显示或隐藏一个窗口在任务栏上的按钮很容易,直接设定一个form的ShowInTabkbar属性即可。但在SDK中却不是一件易事,一个窗口在什么情况下会在任务栏上显示一个按钮,在什么情况下不显示呢?这是有规定的:

    0,无论什么情况,要让一个窗口在任务栏上显示按钮的前提是该窗口是可见的.

    1.如果一个窗口是顶级窗口(也就是父窗口为NULL,也就是父窗口为桌面窗口),那么Windows将为它在任务栏上创建一个按钮.(有例外,见3)

    2.如果一个窗口不是顶级窗口,但有WS_EX_APPWINDOW风格,那么Windows将为它在任务栏上创建一个按钮,否则不会有相应的任务栏按钮.

    3.如果一个窗口是顶级窗口,但加了WS_EX_TOOLWINDOW,并去掉WS_EX_APPWINDOW风格,那么Windows不会为它在任务栏上创建一个按钮.

    4....

    知道了这些规则,你就能随心所欲的控制你的窗口是否要ShowInTaskbar了,下面给出一个问题和解决方案.

    问题:在MFC中一个基于对话框的工程,想要主对话框不在任务栏上显示按钮,该如何做?

    解决方案1:

    根椐上面的第三条规则,给该对话框加上WS_EX_TOOLWINDOW风格并去掉WS_EX_APPWINDOW风格.

    代码:

    在对话框类的OnInitDialog函数里加入:

    ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW,SWP_FRAMECHANGED);

    备注:这种方法会有一个缺点,你的对话框的标题将会是一个小标题,所以大多数人不会采用这种方法.

    解决方案2:

    根椐上面的第二条规则,将该对话框变为非顶级窗口并去掉WS_EX_APPWINDOW,在app类的initinstance里的主对话框domodal之前生成一个隐藏的对话框,并将这个窗口的指针保存在CWinApp类的m_pMainWnd成员变量中,以后DoModal的对话框都将是它的子窗口.

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:NO MFC - 使用 .log 调试程序
    下一篇:自己动手丰衣足食-搞定网页乱码
  • 相关文章