MFC对话框程序创建出来,默认是不带  最小化、最大化 按钮的,而且这也正合我的意愿。我现在想要实现的效果是:当用户 点击 程序在 任务栏 上的 按钮(程序最小化后的效果) 时,这个时候,当程序为正常显示状态时或最大化显示时,程序缩小到任务栏(即最小化);当程序为最小化时,点击后,程序为最大化。
   现在发现的问题是:默认创建的对话框,没有这种功能,只有在当 对话框 标题栏上有最小化按钮时候,才能产生这样的效果,可是我想要的框架风格为  NONE ,即标题栏不需要。所以也就没有  最小化 按钮,我怎么办??
         怎么实现????   跪求各位高手解答…… 

解决方案 »

  1.   

    参考
    http://www.joyvc.cn/GuiAndWindows/GuiAndWindows00008.html应该是激活消息, 在里面发送还原,最大化,最小化窗口的消息.
    SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, MAKELPARAM(point.x, point.y));
    SC_RESTORE
    SC_MAXIMIZE
    point可以为(0,0)
      

  2.   

    直接用API::ShowWindow(handle, SW_MINIMIZE)就OK啦,用不着这么麻烦吧。
      

  3.   

    补充一下::ShowWindow(this->m_hWnd,SW_MAXIZE);
    ::ShowWindow(this->m_hWnd,SW_MINIMIZE);
      

  4.   

        我现在发现的是,如果是 对话框,修改窗口风格,不能实现效果。只有当是CFrameWnd的派生类时,会有种效果(修改风格之后的),我纳闷了……
      1楼的办法原理上行,但是当点击程序在任务栏上的图标时,会产生几次WM_ACTIVE消息,所以不好最最优的判断。     
      

  5.   

       各位大大,我要的效果不是  托盘、不是  ::ShowWindow(this->m_hWnd,SW_MAXIZE),这些我知道,我想要的是  程序点击 任务栏 图标时产生的消息……
      

  6.   

    这个问题已经讨论过很多次了,搜索频道搜一下就知道要实现你红字所说的效果,在窗口初始化的时候添加下面的代码就可以了 
    ModifyStyle(0, WS_MINIMIZEBOX); 如果是想截获单击任务栏的消息,另讨论
      

  7.   

            对对对,我就像说这个,我添加了ModifyStyle(0, WS_MINIMIZEBOX);  好像不顶用
      

  8.   

       刚搜索了下CSDN  搜索频道,原来有人碰到跟我一样的事情了,好好……谢谢Ryanwen的提醒。
    明天结贴
      

  9.   

    添加托盘的时候 ,要自已定个消息的,看见下面的WM_TRAYICON了吗,这个要自己定,然后ON_MESSAGE自己响应消息,才能知道点击
    //ADDTRAY 添加托盘图标
    NOTIFYICONDATA nid;
    nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
    nid.hWnd=this->m_hWnd;
    nid.uID=IDR_MAINFRAME;
    nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
    nid.uCallbackMessage=WM_TRAYICON;//自定义的消息名称
    nid.hIcon=AfxGetApp()->LoadIcon(MAKEINTRESOURCE(IDR_MAINFRAME));
    strcpy(nid.szTip,"TestTrayDlg");
    Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
    响应函数如下 LRESULT CTestTrayDlg::OnTrayIcon(WPARAM wParam,LPARAM lParam)
    {
    if(wParam!=IDR_MAINFRAME)
    return 1;

    switch(lParam)
    {
    case WM_LBUTTONDBLCLK://双击左键的处理
    {
    OnTrayShow();
    }
    break;
    }
    return 0;

    }