Click here to Skip to main content
15,889,281 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Powering down Win98 system Pin
Still learning how to code31-Jan-05 11:31
Still learning how to code31-Jan-05 11:31 
GeneralCalling th OSK (ON-Screen Keyboard) Pin
Alex Evans30-Jan-05 9:43
Alex Evans30-Jan-05 9:43 
GeneralAlgorithm and necessary code Pin
joy00730-Jan-05 5:57
joy00730-Jan-05 5:57 
QuestionHow to Enable at runtime Pin
joy00730-Jan-05 5:40
joy00730-Jan-05 5:40 
AnswerRe: How to Enable at runtime Pin
Bob Ciora30-Jan-05 6:15
Bob Ciora30-Jan-05 6:15 
AnswerRe: How to Enable at runtime Pin
Ravi Bhavnani30-Jan-05 6:17
professionalRavi Bhavnani30-Jan-05 6:17 
GeneralCArray can't add Pin
jw8130-Jan-05 5:31
jw8130-Jan-05 5:31 
GeneralRe: CArray can't add Pin
Bob Ciora30-Jan-05 6:09
Bob Ciora30-Jan-05 6:09 
GeneralRe: CArray can't add Pin
jw8130-Jan-05 6:50
jw8130-Jan-05 6:50 
GeneralRe: CArray can't add Pin
Bob Ciora30-Jan-05 6:54
Bob Ciora30-Jan-05 6:54 
GeneralRe: CArray can't add Pin
jw8130-Jan-05 6:57
jw8130-Jan-05 6:57 
GeneralRe: CArray can't add Pin
Bob Ciora30-Jan-05 7:02
Bob Ciora30-Jan-05 7:02 
GeneralRe: CArray can't add Pin
jw8130-Jan-05 19:03
jw8130-Jan-05 19:03 
Questionwhy a COM can not be deleted? Pin
includeh1030-Jan-05 5:15
includeh1030-Jan-05 5:15 
AnswerRe: why a COM can not be deleted? Pin
Bob Ciora30-Jan-05 6:52
Bob Ciora30-Jan-05 6:52 
GeneralRe: why a COM can not be deleted? Pin
includeh1030-Jan-05 10:28
includeh1030-Jan-05 10:28 
Hi Bob,
thanks.

I am testing a sample downloaded.
the sample uses a ref count (ULONG m_uRefCount) initialized as 1 in construct;

in AddRef(), the count inc 1;
in Release(), the count dec 1;
in QueryInterface(), it may inc 1;

is the idea right?

details are in followings:
----------------------------------------
//construct
CContextMenu::CContextMenu()
{
m_uRefCount=1;
}

STDMETHODIMP_(ULONG)CContextMenu::AddRef()
{
return ++m_uRefCount;
}

STDMETHODIMP_(ULONG)CContextMenu::Release()
{
if(--m_uRefCount==0)
{
delete this;
return 0;
}
return m_uRefCount;
}

STDMETHODIMP CContextMenu::QueryInterface(REFIID iid,LPVOID FAR*ppv)
{
m_uRefCount++;
if(IsEqualIID(riid,IID_IUnknown))
{
*ppv=this;
return NOERROR;
}
else if(IsEqualIID(riid,IID_IShellExtInit))
{
*ppv=(LPSHELLEXTINIT)this;
return NOERROR;
}
else if(IsEqualIID(riid,IID_IContextMenu))
{
*ppv=(IContextMenu*)this;
return NOERROR;
}
else
{
m_uRefCount--;
*ppv=0;
return ResultFromScode(E_NOINTERFACE);
}
}

m_uRefCount is NOT used by other placess.
what is wrong?















GeneralRe: why a COM can not be deleted? Pin
geo_m30-Jan-05 19:39
geo_m30-Jan-05 19:39 
GeneralTrouble with for(;;) Pin
ghostpirate730-Jan-05 3:20
ghostpirate730-Jan-05 3:20 
GeneralRe: Trouble with for(;;) Pin
Bob Ciora30-Jan-05 6:00
Bob Ciora30-Jan-05 6:00 
GeneralRe: Trouble with for(;;) Pin
Bob Ciora30-Jan-05 6:32
Bob Ciora30-Jan-05 6:32 
QuestionCan not debug COM from ASP.NET ... Pin
vgrigor130-Jan-05 2:27
vgrigor130-Jan-05 2:27 
QuestionWhy toolbar disabled? Pin
skybirdcao30-Jan-05 1:17
skybirdcao30-Jan-05 1:17 
Questiona big challenge: how to control toolbar's button size? Pin
skybirdcao30-Jan-05 0:51
skybirdcao30-Jan-05 0:51 
Questionhow to get pixel? Pin
cobre12330-Jan-05 0:46
susscobre12330-Jan-05 0:46 
QuestionHow to add a password to a .exe file? Pin
sharkmouse29-Jan-05 23:39
sharkmouse29-Jan-05 23:39 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.