begin process at 2012 05 30 20:07:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

ActiveX / COM

 > 

Windows Mail et RegisterNotification (...) !!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Windows Mail et RegisterNotification (...) !!

samedi 17 mars 2007 à 15:58:55 | Windows Mail et RegisterNotification (...) !!

delirium6

Bonjour,

Développant une application que je porte pour Windows Mail sur le nouveau Vista, j'ai un soucis avec l'appel de cette fonction (que je n'avais pas sous les autres OS Windows et Outlook Express!) :

=>  hr = m_pFolder->RegisterNotification( 0, m_pOENotifyWnd->m_hWnd );

Elle n'abouti pas et me renvoi une erreur COM  ( -2147467263 ) non indiqué sur la MSDN http://msdn2.microsoft.com/en-us/library/ms710256.aspx

Voici les deux classes nécessaires a la compréhension du fonctionnement :

class COEFolderWrapper
{
public:
   COEFolderWrapper():
         m_pFolder(NULL),
         m_pOENotifyWnd(NULL)
   {
   }

   ~COEFolderWrapper()
   {
      if( m_pOENotifyWnd )
      {
         m_pOENotifyWnd->DestroyWindow();

         delete m_pOENotifyWnd;
         m_pOENotifyWnd = NULL;
      }
   }
   }

   //
   //   SetFolder
   //
   /////////////////////////////////////////////////////////////////////////
   VOID SetFolder(CComPtr<IStoreFolder> pFolder)
   {
      HRESULT hr = S_OK;

      m_pFolder = pFolder;

      if( m_pFolder )
      {
         m_pFolder->AddRef();

         CRect rect(10, 10, 100, 100);

         m_pOENotifyWnd = new(COENotifyWnd);

         if( m_pOENotifyWnd->CreateEx( NULL, AfxRegisterWndClass(0,0,0,0),_T("OENotifyWnd"),WS_POPUP,rect, NULL, NULL, NULL ))
         {
            m_pOENotifyWnd->SetFolder( m_pFolder );

            hr = m_pFolder->RegisterNotification( 0, m_pOENotifyWnd->m_hWnd );
      //#ifdef IS_TEST
               FOLDERPROPS props;
               props.cbSize = sizeof(FOLDERPROPS);

               m_pFolder->GetFolderProps( 0, &props );
               if( hr == E_INVALIDARG )
               {
                  MessageBox( NULL, props.szName, "E_INVALIDARG : COEFolderWrapper::SetFolder", MB_OK );
               }
               if( hr == E_FAIL )
               {
                  MessageBox( NULL, props.szName, "E_FAIL : COEFolderWrapper::SetFolder", MB_OK );
               }

               if( hr != S_OK )
               {
   CString str;
   str.Format("%d",hr);
   MessageBox( NULL, str, "S_OK : COEFolderWrapper::SetFolder", MB_OK );
                  MessageBox( NULL, props.szName, "S_OK : COEFolderWrapper::SetFolder", MB_OK );
               }

               if( hr == S_OK )
               {
   CString str;
   str.Format("%d",hr);
   MessageBox( NULL, str, "S_OK : COEFolderWrapper::SetFolder", MB_OK );
                  MessageBox( NULL, props.szName, "ISGOOD : COEFolderWrapper::SetFolder", MB_OK );
               }
         //#endif
         }
         else
            MessageBox( NULL, "BAD", "BAD", MB_OK );

      }
   }

   //
   //   Unregister
   //
   /////////////////////////////////////////////////////////////////////////
   VOID Unregister()
   {
      if( m_pFolder )
      {
         m_pFolder->UnregisterNotification( 0, m_pOENotifyWnd->m_hWnd );

         m_pFolder->Release();
         m_pFolder = NULL;
      }
   }

   IStoreFolder* m_pFolder;

   COENotifyWnd* m_pOENotifyWnd;
};


// COENotifyWnd dialog used for App About

class COENotifyWnd : public CWnd
{
public:
   COENotifyWnd();

// Dialog Data
   //enum { IDD = IDD_OENOTIFYWND };

   //VOID SetRes(HMODULE hResModule){ AfxGetResourceHandle() = hResModule; }

public:
   afx_msg LRESULT OnNewMsgs(WPARAM wParam, LPARAM lParam);
   afx_msg LRESULT OnFolderNotify(WPARAM wParam, LPARAM lParam);

   VOID SetFolder(IStoreFolder* pFolder){ m_pFolder = pFolder; }

   IStoreFolder* m_pFolder;

   protected:
   //HMODULE AfxGetResourceHandle();
   virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
   //virtual BOOL OnInitDialog();
// Implementation
protected:
   DECLARE_MESSAGE_MAP()
};

COENotifyWnd::COENotifyWnd()// : CDialog(COENotifyWnd::IDD)
{
}

void COENotifyWnd::DoDataExchange(CDataExchange* pDX)
{
   CWnd::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(COENotifyWnd, CWnd)
   ON_MESSAGE(WM_NEWMSGS,COENotifyWnd::OnNewMsgs)
   ON_MESSAGE(WM_FOLDERNOTIFY,COENotifyWnd::OnFolderNotify)
END_MESSAGE_MAP()


//
//   OnNewMsgs
//
/////////////////////////////////////////////////////////////////////////
LRESULT COENotifyWnd::OnNewMsgs(WPARAM wParam, LPARAM lParam)
{   MessageBox("OnNewMsgs","OnNewMsgs",MB_OK);
#ifdef IS_MANAGEMUTLFOLDERS_OE
   OEPlugin_OnNewMsgs( wParam, lParam, m_pFolder );
#else
   OEPlugin_OnNewMsgs( wParam, lParam );
#endif

   return 0;
}


//
//   OnFolderNotify
//
/////////////////////////////////////////////////////////////////////////
LRESULT COENotifyWnd::OnFolderNotify(WPARAM wParam, LPARAM lParam)
{
   OEPlugin_OnFolderNotify( wParam, lParam );
   return 0;
}

L'appel à cette fonction est essentiel à mon application car sinon, mon appli ne pourra pas être notifié des évenements survenant dans les dossiers de windows mail à surveiller par celle-ci.

Ainsi, je recherche de l'aide ou des voix a suivre pour y arriver, car là je séche depuis plusieurs jours!

Merci par avance!



Cette discussion est classée dans : ok, wparam, pfolder, coenotifywnd, poenotifywnd


Répondre à ce message

Sujets en rapport avec ce message

Probleme [ par vb7 ] J'ai un probleme!!!l instruction if et else ne fonctionne pas!! voilà mon code :#include void main(){char A[1000];coutcin>>A;if (A>"teste"){cout<<"tes Qui veut gagné 50Frs!!!!!!!!!!!!!! [ par Akil ] Bonjour à tousJe cherche quelqu'un qui sait bien programmer en langage C++ et Vb.J'ai un projet d'éditeur de texte Farsi (Righttoleft)en C++ et je vou faire progresser....une progress bar !! [ par Xs ] c tout bete, mais je sais pas comment faire. ou plutot lui dire a quoi comparer sa progression par rapport au chargement de quelque chose.mon code : # positions [ par Xs ] salut ! je cherche et je trouve pas, ou alors je sais pas m'en servir, comment on recupere la position actuelle du fenetre(dialogbox).j'ai essayé des touches [ par Xs ] voila, j'ai essayé de tester des touches afin que, par exemple, lorsque l'on appuie sur Y, une message box apparaisse.j'ai recupérer ce code venat de pu#!@'{&=!:; de memoire !!! [ par Xs ] salut.voila, presque chacun de mes prog, j'obtiens une erreur memoire du type "l'adresse "0x0001834F" ne peut etre "read"/"written"........."c 'est t Boîte de dialogue à onglet [ par koiki ] Bonjour,Quelqu'un saurait-il comment "capturer" les messages des boutons Ok et Cancel qui sont générés dynamiquement par la classe CPropertySheet d'un Pb sur un ptit bout de prog en DirectX.... [ par Haldwin ] Salut a tous....Voila j'ai deux ptits pbs quand je lance cette appli ci-dessous... (VC++)La première est q'une fois sur deux ma variable hWnd apres le list control [ par soshell ] Bonjour!J'ai un projet à finir dans 2 jours ( je sais c pas malin...) et j'ai commencé la prog windows hier, c pour ca ke j'ose mettre ce post dans au pb a la fermeture de win [ par stick ] bonjours,alors voilou, je fais une appli en utilisant l'api window, mais si je ferme windows sans quitter le programme auparavant, celui ci plante et


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,108 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales