dialog窗体有标题栏时在任务栏的图标上点一下会最小化,再点一下会还原
,但是无标题栏时怎么点没反应,我想收到点击任务栏消息实现与有标题的窗体一样的功能。

解决方案 »

  1.   

    楼主似乎应该先看这个关于托盘编程的资料
    http://www.vckbase.com/document/viewdoc/?id=492
    http://www.vckbase.com/document/viewdoc/?id=495
    http://www.vckbase.com/document/viewdoc/?id=498
      

  2.   

    发送 WM_SYSCOMMAND 类型的消息且值为 SC_MINIMIZE 即可。
    比如,如果你用的是 CDialog 窗体,则发送下面的消息会最小化
    ::SendMessage(m_hWnd,WM_SYSCOMMAND,SC_MINIMIZE,0);
    窗口最小化到任务栏后,再点它,自然会恢复。
      

  3.   

    上面的 m_hWnd 是那个CDialog的句柄(HWND), 需要先得到它. 如果在窗体内, 则可直接用
      

  4.   

    还是没明白,如果是在窗体上操作发送WM_SYSCOMMAND当然是行的,问题是我要先知道了点击任务栏里的图标时会收到什么消息,收到这个消息后再发送相应的最大化,最小化消息吧。
    比如你打开了两个文件,一个文件A,一个文件B,这里在任务栏上有文件A和文件B的图标,你点一下文件A的图标,文件A显示,你再点一下文件A的图标,就切换到后台去了
      

  5.   

    to: sgnaw(李逍遥) ( 两星(中级)) 信誉:115
    是的,最小化后点一下任务栏上的图标,程序会显示,但是无标题的窗口在显示的时候点任务栏的图标他不会切换到后台去,并显示别的程序,但有有标题窗口是可以的,我就是想解决这个问题
      

  6.   

    碰过这样的问题
    我的理解是,在点击任务栏的图标时,windows发送像FindWindow这类消息,但是如果对话框的标题栏为空的话,找不到这个空的对话框句柄,因此不能够发送保持最前的消息,所以无效。
      

  7.   

    上面的那个错了
    用spy++察看,最先得到的是WM_WINDOWPOSCHANGING,然后是WM_WINDOWPOSCHANGED,WM_ACTIVATEAPP,WM_NCACTIVATE,WM_GETTEXT……   
     你可以自己看一下,从点击到最大化完成,总共68条消息。
      

  8.   

    原来是说TaskBand Button 啊
    貌似只能在对话框上加个最小化按钮去执行最小化操作了,曾试着重载OnActivate()但发现点一下任务栏上的按钮,会收到多次WM_ACTIVATE,即使加了辅助变量也不好判断
      

  9.   

    spy++是什么???貌似是很好用的工具?