用同样的代码,在mfc的应用中可以马上显示,但在规则dll中供应用调用的时候却不能马上显示,要10秒后才会显示,何解?

解决方案 »

  1.   

    dll 中的操作方式?
    调用 dll 方式?只是更改方式, 使用 dll 的话,
    不会造成这样的区别的 ...
      

  2.   

    VS2005的环境,MFC规则dll
    NOTIFYICONDATA m_nData;
    UINT m_trayMsg;BOOL __stdcall InitTrayInfo(HWND hwnd)
    {
        m_trayMsg =  RegisterWindowMessage("ERoomShowTrayInfo");
        NOTIFYICONDATA& nData = m_nData;
        nData.cbSize = sizeof(NOTIFYICONDATA);
        nData.hWnd = hwnd;
        nData.uFlags = NIF_MESSAGE|NIF_INFO|NIF_ICON|NIF_TIP;
        nData.uCallbackMessage = m_trayMsg;
        nData.uID = IDI_EROOM;
        nData.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
        strcpy_s(nData.szInfoTitle, "");
        strcpy_s(nData.szInfo, "");
        strcpy_s(nData.szTip, "双击恢复");    Shell_NotifyIcon(NIM_ADD,&nData);
        return TRUE;    
    }BOOL __stdcall DeleteTrayInfo()
    {
        Shell_NotifyIcon(NIM_DELETE,&m_nData);
        return TRUE;
    }BOOL __stdcall ShowTrayInfo(HWND hwnd, LPCTSTR pchTitle, LPCTSTR pchInfo)
    {
        NOTIFYICONDATA& nData = m_nData;
        nData.cbSize = sizeof(NOTIFYICONDATA);
        nData.hWnd = hwnd;
        nData.uFlags = NIF_MESSAGE|NIF_INFO|NIF_ICON|NIF_TIP;
        nData.uCallbackMessage = m_trayMsg;
        nData.uID = IDI_EROOM;
        nData.dwInfoFlags = NIIF_USER;
        strcpy_s(nData.szInfoTitle, pchTitle);
        strcpy_s(nData.szInfo, pchInfo);    Shell_NotifyIcon(NIM_MODIFY,&nData);
        return TRUE;}
      

  3.   

    同样的函数代码copy到标准mfc对话框程序中无此问题,调用dll是用vb6调用的,首先InitTrayInfo,需要显示的时候ShowTrayInfo,却发现几乎每次都要等10秒以后才会出现。