就是按一下键盘上的F12,自动将整个程序隐藏到托盘中,怎么做的?有这方面的例子吗?

解决方案 »

  1.   

    给你一段提示:
    ------------------------------------------------------------------------
    显示图标:
    // show ICON on the right of task bar.
    NOTIFYICONDATA tnd;
    tnd.cbSize=sizeof(NOTIFYICONDATA);
    tnd.hWnd=this->m_hWnd;
    tnd.uID=IDR_MAINFRAME;
    tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
    tnd.uCallbackMessage=WM_MINIICON;
    tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
    strcpy(tnd.szTip,"SS7/SIU Monitor, Click to Display.");
    Shell_NotifyIcon(NIM_ADD,&tnd);------------------------------------------------------------------------
    注消图标:
    NOTIFYICONDATA tnid;
    tnid.cbSize=sizeof(NOTIFYICONDATA);
    tnid.hWnd=this->m_hWnd; 
    tnid.uID=IDR_MAINFRAME;
    Shell_NotifyIcon(NIM_DELETE,&tnid); //delete the icon-------------------------------------------------------------------------
    恢复:
    UINT uID; //icon ID
    UINT uMouseMsg; //mouse action
    POINT pt;
    uID=(UINT) wParam;
    uMouseMsg=(UINT) lParam;
    if(uMouseMsg==WM_LBUTTONDOWN) //right click
    {
     switch(uID)
     {
     case IDR_MAINFRAME: //this dlg
    GetCursorPos(&pt); //get screen postion
    ShowWindow(SW_RESTORE); //restore the window to display
    break;
     default:
    break;
     }
    }
    else if(uMouseMsg==WM_RBUTTONDOWN)
    {

    }----------------------------------------------------------
    完整内容事关产权,不能提供,原谅。
      

  2.   

    拦截F12,应该能够用pretranslagemessage截获吧。
      

  3.   

    www.vckbase.comhttp://www.vckbase.com/code/listcode.asp?mclsid=13&sclsid=1309
    《魔高一丈2.0》开发实例源代码就是你要的了,哈哈,
    如果你要用键盘控制,你只要把那个MOUSEHOOK改成KEYHOOK就可以了。
      

  4.   

    MFC程序,恢复的那段代码放在哪里呀?
      

  5.   

    不用键盘钩子也行啊,可以注册热键.
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    ...
    if(!::RegisterHotKey(this->m_hWnd,0Xa001,NULL,(UINT)VK_F4))
        AfxMessageBox("RegisterHotKey failed!");
    ...
    }BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) 
    {
    if (pMsg->message==WM_HOTKEY && pMsg->wParam==0Xa001)
    {
    ShowWindow(SW_HIDE);
    }
    return CMDIFrameWnd::PreTranslateMessage(pMsg);
    }void CMainFrame::OnClose()
    {
    UnregisterHotKey(this->m_hWnd,0Xa001);
    CMDIFrameWnd::OnClose();
    }
    这样也就行了。
      

  6.   

    不用键盘钩子也行啊,可以注册热键.
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    ...
    if(!::RegisterHotKey(this->m_hWnd,0Xa001,NULL,(UINT)VK_F4))
        AfxMessageBox("RegisterHotKey failed!");
    ...
    }BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) 
    {
    if (pMsg->message==WM_HOTKEY && pMsg->wParam==0Xa001)
    {
    ShowWindow(SW_HIDE);
    }
    return CMDIFrameWnd::PreTranslateMessage(pMsg);
    }void CMainFrame::OnClose()
    {
    UnregisterHotKey(this->m_hWnd,0Xa001);
    CMDIFrameWnd::OnClose();
    }
    这样也就行了。
      

  7.   

    噢,我上面例子是用F4,没看到你说用F12,用F12就会失败,不知道什么原因 。
    不过为什么非要用F12呢?