我有一个对话框程序,已经加上了托盘的技术,现在该对话框的标题栏只有关闭一个按键,如果在对话框的属性里设置有最小话按钮,中间又多一个虽然不能用的最大话按钮,我不想这样,就是只加一个最小话按钮,按该按钮以后对话框可以缩到托盘那里,要怎么弄呢?请指教!

解决方案 »

  1.   

    将程序最小化到系统托盘区的函数toTray()。void CTimeWakeDlg::toTray()
    {
    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_SHOWTASK;//自定义的消息名称
    nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
    strcpy(nid.szTip,"计划任务提醒");//信息提示条为“计划任务提醒”
    Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
    ShowWindow(SW_HIDE);//隐藏主窗口
    }这是个很简单的函数,里面首先给NOTIFYICONDATA赋值,然后调用shell_NotifyIcon, 头一个参数是NIM_ADD,表示添加。然后用函数ShowWindow 隐藏主窗口,这样,就实现了将程序最小化到系统托盘区的任务了。
      

  2.   

    HMENU hSysMenu = GetSystemMenu(<parent wndhandle>, FALSE);
    RemoveMenu(hSysMenu,SC_MAXIMIZE , MF_BYCOMMAND);
    RemoveMenu(hSysMenu,SC_SIZE , MF_BYCOMMAND);
      

  3.   

    HMENU hSysMenu = GetSystemMenu(<parent wndhandle>, FALSE);
    通不过阿!!是不是有错误!
      

  4.   

    在OnCreate(LPCREATESTRUCT lpCreateStruct) 函数里面,
    SetWindowLong(this->m_hWnd,GWL_STYLE,
           GetWindowLong(this->m_hWnd,GWL_STYLE) | 
                WS_MINIMIZEBOX); 
    但是也仅仅是把最大化按钮禁用而已!
      

  5.   

    是呀!仔细看,最大与最小是连在一起,而且你选择其中一个显示,其实两个就都显示了。而最大和最小  与 关闭间可以明显的看到是不连的。而且重要的是:那个最大和最小  是画上去的,好像不是Object!(我是这样理解的)
      

  6.   

    HMENU hSysMenu = GetSystemMenu(<parent wndhandle>, FALSE);
    <parent wndhandle>指的是你顶级窗口的HANDLE