salut
j'ai un soucis en essayant d'utiliser SeriesCollection. Je l'appelle en tant que m�thode, en lui passant le n� de la Series que je veux. Mais on dirait qu'il ne me donne pas le Series que j'attends, car quoique j'essaie d'en faire (en particulier de consulter sa propri�t� Name), �a ne marche pas. Mais la SeriesCollection n'est pas vide, son Count me retourne 5 !
J'ai aussi essay� d'utiliser SeriesCollection sans param�tre, et en obtenant ensuite la Series voulue d'apr�s la m�thode Item, mais �a ne marche pas mieux :-(
Est-ce que vous avez une id�e ? J'ai pass� l'apr�s-midi � essayer de trouver la solution...
Merci beaucoup pour votre aide !
Voici mon code :
o� OLEMethod (utilis� avec succ�s un peu partour dans mon programme) vient d'un article de CodeProject, il appelle Invoke:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 (...) // j'obtiens un objet Chart valide IDispatch* pSeries; VARIANT result; VariantInit(&result); VARIANT itemn; itemn.vt = VT_I4; itemn.lVal = 2; m_hr=OLEMethod(DISPATCH_METHOD, &result, pChart, L"SeriesCollection", 1, itemn); pSeries=result.pdispVal; VariantInit(&result); m_hr=OLEMethod(DISPATCH_PROPERTYGET, &result, pSeries, L"Name", 0); sLegendText = result.bstrVal;
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 HRESULT OLEMethod(int nType, VARIANT *pvResult, IDispatch *pDisp,LPOLESTR ptName, int cArgs...) { if(!pDisp) return E_FAIL; va_list marker; va_start(marker, cArgs); DISPPARAMS dp = { NULL, NULL, 0, 0 }; DISPID dispidNamed = DISPID_PROPERTYPUT; DISPID dispID; char szName[200]; // Convert down to ANSI WideCharToMultiByte(CP_ACP, 0, ptName, -1, szName, 256, NULL, NULL); // Get DISPID for name passed... HRESULT hr= pDisp->GetIDsOfNames(IID_NULL, &ptName, 1, LOCALE_USER_DEFAULT, &dispID); if(FAILED(hr)) { return hr; } // Allocate memory for arguments... VARIANT *pArgs = new VARIANT[cArgs+1]; // Extract arguments... for(int i=0; i<cArgs; i++) { pArgs[i] = va_arg(marker, VARIANT); } // Build DISPPARAMS dp.cArgs = cArgs; dp.rgvarg = pArgs; // Handle special-case for property-puts! if(nType & DISPATCH_PROPERTYPUT) { dp.cNamedArgs = 1; dp.rgdispidNamedArgs = &dispidNamed; } // Make the call! hr = pDisp->Invoke(dispID, IID_NULL, LOCALE_SYSTEM_DEFAULT, nType, &dp, pvResult, NULL, NULL); if(FAILED(hr)) { return hr; } // End variable-argument section... va_end(marker); delete [] pArgs; return hr; }
Partager