ÇóÖú£ºÈçºÎ½«Ò»¸öC++Ààת»»³ÉDelphi´úÂë
ͬ±êÌ⣬¸ÃÀàÊÇDirectShowÖеÄÒ»¸öʾÀý£¬ÇóÈçºÎ½«Æäת»¯³ÉDelphi´úÂ룬Íò·Ö¸Ðл£¡£¡
C/C++ code:
// ÀàÉùÃ÷
class CErrReporter : public IAMErrorLog
{
protected:
long m_lRef; // Reference count.
public:
CErrReporter() { m_lRef = 0; }
// IUnknown
STDMETHOD(QueryInterface(REFIID, void**));
STDMETHOD_(ULONG, AddRef());
STDMETHOD_(ULONG, Release());
// IAMErrorLog
STDMETHOD(LogError(LONG, BSTR, LONG, HRESULT, VARIANT*));
};
// ²¿·ÖʵÏÖ
STDMETHODIMP CErrReporter::QueryInterface(REFIID riid, void **ppv)
{
if (ppv == NULL) return E_POINTER;
*ppv = NULL;
if (riid == IID_IUnknown)
*ppv = static_cast<IUnknown*>(this);
else if (riid == IID_IAMErrorLog)
*ppv = static_cast<IAMErrorLog*>(this);
else
return E_NOINTERFACE;
AddRef();
return S_OK;
}
STDMETHODIMP_(ULONG) CErrReporter::AddRef()
{
return InterlockedIncrement(&m_lRef);
}
STDMETHODIMP_(ULONG) CErrReporter::Release()
{
// Store the decremented count in a temporary
// variable.
ULONG uCount = InterlockedDecrement(&m_lRef);
if (uCount == 0)
{
delete this;
}
// Return the temporary variable, not the member
// variable, for thread safety.
return uCount;
}
1¡¢±ØÐëÌṩIAMErrorLogµÄ½Ó¿
Ïà¹ØÎÊ´ð£º
C\C++ÈçºÎ¼ÆË㺯ÊýµÄµ¼Êý,±¾ÈËÐÂÊÖ£¬Ïëд¸ö³ÌÐò£¬µ«ÊDz»ÖªµÀÈçºÎÏÂÊÖ£¬»¹Íû¸ßÊÖÖ¸µãÒ»¶þ£¬Ð»¹ý¡£
Õâ¸ö¡¡
¸úº¯ÊýµÄ¾ßÌåÐÎʽÓйذɣ¬ÄѵÀÄãÏë±à³ö¸ö¡°ÍòÄÜ¡±µÄÇ󵼺¯Êý£¿
°³ÉÏѧʱÏë¹ý×Ô¶¯ÍƵ¼¹«Ê½£¬ºóÀ´ ......
ÄÚÈÝÉæ¼°£ºC¡¢C++¡¢STL¡¢VC++¡¢MFC¡¢COM¡¢ATL¡¢WindowsÍøÂç±à³Ì¡¢Êý¾Ý¿â±à³Ì¡¢WindowsÇý¶¯±à³Ì¡¢Èí¼þ¹¤³Ì¡¢Windows²Ù×÷ϵͳ±à³Ì£¬µÈµÈ·½Ãæ¡£
ÏÂÔØµØÖ·£ºhttp://www.cctry.com/forumdisplay.php?fid=46
......
дÁ˸ö²âÊÔ³ÌÐòÈçÏÂ
struct hostent *hp;
char AlarmDevIP[20];
int x2;
hp = gethostbyname("www.google.com");
if (hp)
{
......
ÓÉÓÚ¿Í戶¶ËÓеÄÎļþ經³£¸üУ¨遠³ÌµÄ£¬²»ÊǾÖÓò網£©£¬
ËùÒÔÏë寫個×Ô動¸üÐ嵀 ³ÌÐò¡£
¿´網É쵀 ·½·¨資ÁÏ£¬ÖªµÀЩ·½·¨£¬µ«²»ÖªµÀ¾ß體Ôõô寫¡£
......