如何将运行后的程序最小化到任务栏,当双击任务栏图标后,将程序窗口还原。
最好给点解释,谢谢!
//小弟是菜鸟//

解决方案 »

  1.   

    可以用控件trayicon
    下载:http://www.playicq.com/dispdocnew.php?id=2385
      

  2.   

    void __fastcall TForm1::MyNotify(TMessage& Msg)
    {
        POINT MousePos;
        GetCursorPos(&MousePos);
        switch(Msg.LParam)
        {
            case WM_RBUTTONUP:      // 右击事件
                    PopupMenu2->PopupComponent = this;
                    SetForegroundWindow(Handle);
                    PopupMenu2->Popup(MousePos.x, MousePos.y);
                break;
            case WM_LBUTTONUP:      // 左击时间
                  popprogram->PopupComponent = this;
                  SetForegroundWindow(Handle);
                  popprogram->Popup(MousePos.x, MousePos.y-10);
                break;
            case WM_LBUTTONDBLCLK:
               myShowTaskLan();
                break;
        }
        TForm::Dispatch(&Msg);
    }void __fastcall  TForm1::myShowTaskLan()//显示任务栏
    {
    ShowWindow(Application->Handle, SW_SHOW);
          SetWindowLong(Application->Handle, GWL_EXSTYLE,
          !( (GetWindowLong(Application->Handle,
          GWL_EXSTYLE)) || WS_EX_TOOLWINDOW &&
          (!WS_EX_APPWINDOW)
          ));
    ShowWindow(Handle, SW_RESTORE);
    Application->Restore();
    Application->BringToFront();
    TrayMessage(NIM_DELETE);
    hasmin=false;
    }void __fastcall  TForm1::myHideTaskLan()//隐藏任务栏
    {
    ShowWindow(Handle,  SW_HIDE);
    ShowWindow(Application->Handle,  SW_HIDE);
    ShowWindowAsync( Handle, SW_HIDE );
    SetWindowLong(Application->Handle,  GWL_EXSTYLE,
            GetWindowLong(Application->Handle,  GWL_EXSTYLE)
            ||  WS_EX_TOOLWINDOW  && (!  WS_EX_APPWINDOW));
    //TrayMessage(NIM_MODIFY);
    TrayMessage(NIM_ADD);
    hasmin=true;
    }
    bool __fastcall TForm1::TrayMessage(DWORD dwMessage)
    {
       NOTIFYICONDATA tnd;   tnd.cbSize          = sizeof(NOTIFYICONDATA);
       tnd.hWnd            = Handle;
       tnd.uID             = IDC_MYICON;
       tnd.uFlags          = NIF_MESSAGE | NIF_ICON | NIF_TIP;
       tnd.uCallbackMessage = MYWM_NOTIFY;  // if (dwMessage == NIM_MODIFY)     // 修改图标,提示文字
        if (dwMessage == NIM_ADD)     // 修改图标,提示文字
        {
            tnd.hIcon  = (HICON)Application->Icon->Handle;
            lstrcpyn(tnd.szTip, Application->Title.c_str(), sizeof(tnd.szTip)+1);
        }
       else
        {
            tnd.hIcon = NULL;
            tnd.szTip[0] = '\0';
        }
       return (Shell_NotifyIcon(dwMessage, &tnd));
    }