|
|
1. Nothing. They are used for different purpose - WINAPI is used for Windows API function calls, CALLBACK is used for callback functions that you define. It's purely so developers can tell the difference between what the functions are used for.
2. The default calling convention for C and C++ is cdecl , not stdcall .
3. No. The first one has the cdecl calling convention, the second is stdcall .
4. A function marked with CALLBACK uses the stdcall calling convention, rather than the usual cdecl . This means that the parameters are popped off the stack by the function, rather than the caller. For cdecl functions, the parameters are popped off the stack by the caller.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Thanks Ryan,
This is what i am looking for..
Thanks WhiteSky.The link is very informative.
Keep going.
Thanks again.
Appu..
"If you judge people, you have no time to love them."
|
|
|
|
|
__stdcall is a "calling convention". Portability is the simplified explanation. Macros are used to enhance the portability of the code.
This article might help[^]
"Just about every question you've asked over the last 3-4 days has been "urgent". Perhaps a little planning would be helpful?" Colin Angus Mackay in the C# forum
led mike
|
|
|
|
|
Hello,
By using WinInet Api,I can know that I am connected via LAN but is there any Api by using which I can know that i am connected via WLAN or not.
Regards
Girish
Software Developer
|
|
|
|
|
Hi,
Generally I can't remember any perfect function - all techniques are based on check existance an well-known address. You can try to use
BOOL InternetCheckConnection(
LPCTSTR lpszUrl,
DWORD dwFlags,
DWORD dwReserved
);
-----------
Mila
|
|
|
|
|
I want to open avi file and get each frame from avi stream. These frames will be used in my programme. I search many sites, but I can't find siutiable answer. Please give me some suggestions if you have any idea. I am very grateful for your help. Thanks!
dinyxu
-- modified at 0:10 Friday 9th June, 2006
|
|
|
|
|
See Here[^] maybe it is some helpful to you
whitesky
|
|
|
|
|
code:
CDC *pDC = GetDC();
CDC m_memDC;
if ( !m_memDC.CreateCompatibleDC( pDC ) )
{
AfxMessageBox("FAILED")
}
HBITMAP hmemBM = CreateCompatibleBitmap( m_memDC.m_hDC, width, height );
//When I use GetLastError(),I get error code 87( invailed parameter ).
// but it work well on WinXP( error code is 0 ).
I do not know why??
may be i made a mistake?
or may be it has something different in 2000 and xp?
any help would be greatly appreciated!!
thanksss!
|
|
|
|
|
// I'm thinking it should be something like...
CDC *pDC=GetDC(hWnd);
CDC m_memDC;
if (m_memDC.CreateCompatibleDC(pDC)) {
HBITMAP hmemBM=CreateCompatibleBitmap(pDC->m_hDC,width,height);
hOldBitmap=SelectObject(m_memDC.m_hDC,hmemBM);
} else {
AfxMessageBox("FAILED")
}
///////////
// stuff
///////////
SelectObject(m_memDC.m_hDC,hOldBitmap);
|
|
|
|
|
|
why you use m_memDC.m_hDC HBITMAP hmemBM = CreateCompatibleBitmap( m_memDC.m_hDC, width, height );
you can use HBITMAP hmemBM = CreateCompatibleBitmap(GetDC()->m_hDC, width, height );
whitesky
|
|
|
|
|
The following code is a very simple linked list it seems to work fine it compiles it runs and
the output is the desierd output but the problem i'm having is in this line of code
<br />
if(m_cNext)<br />
{<br />
delete( m_cNext );<br />
m_cNext = NULL;<br />
}<br />
of the Reset member of the template.
It Gives me an error on debug but not on release.
Access violation writing location 0x00030fd4.
I'm simply not seeing the problem any suggestions help would be helpful.
<code>
#include< windows.h >
#include< iostream.h >
template < typename xType >
class CLinked
{
public:
CLinked();
~CLinked();
void SetCallDelete(BOOL b) {
m_bCallDelete = b;
if( m_Next )
m_Next->SetCallDelete(b);
}
xType* GetObject() { return(m_ObjData); }
CLinked* GetNext() { return(m_cNext); }
CLinked* GetPrev() { return(m_cPrev); }
CLinked* AddObject(xType* pvPtr,CLinked* prev=NULL);
void ReplaseObject(xType* obj) { m_ObjData = obj; }
void Reset();
private:
xType* m_ObjData;
CLinked* m_cPrev;
CLinked* m_cNext;
BOOL m_bCallDelete;
};
template < typename xType >
CLinked< xType >::CLinked()
{
m_bCallDelete = TRUE;
m_cPrev = NULL;
m_cNext = NULL;
m_ObjData = NULL;
}
template < typename xType >
CLinked< xType >::~CLinked()
{
if( m_bCallDelete )
{
if( m_ObjData )
delete( m_ObjData );
m_ObjData = NULL;
}
if(m_cNext)
{
delete( m_cNext );
m_cNext = NULL;
}
}
template < typename xType >
void CLinked< xType >::Reset()
{
if( m_bCallDelete )
{
if( m_ObjData )
delete( m_ObjData );
m_ObjData = NULL;
}
if(m_cNext)
{
delete( m_cNext );
m_cNext = NULL;
}
m_cPrev = NULL;
m_cNext = NULL;
m_ObjData = NULL;
}
template < typename xType >
CLinked< xType >* CLinked< xType >::AddObject(xType* pvPtr, CLinked* cpPrev)
{
if( pvPtr == NULL )
return( NULL );
if( m_ObjData == NULL )
{
m_ObjData = pvPtr;
m_cPrev = cpPrev;
return( this );
}
if( m_cNext )
{
return( m_cNext->AddObject(pvPtr,this) );
}
m_cNext = new CLinked();
if( m_cNext == NULL )
return(NULL);
return( m_cNext->AddObject(pvPtr,this) );
}
typedef CLinked< int > _intList;
#define MAXSIZE 10000
int main(int argc, _TCHAR* argv[])
{
_intList SomeList;
_intList* tmp = &SomeList;
int* piNum = NULL;
int i;
for(i=0 ; i < MAXSIZE; i ++ )
{
piNum = new int;
if( !piNum )
{
cout<<"Error int allocation"<<endl;
return(FALSE);
}
*piNum = i;
tmp = tmp->AddObject(piNum);
if(!tmp)
{
cout<<"List Error"<<endl;
return(FALSE);
}
}
for(tmp=&SomeList ; tmp ; tmp = tmp->GetNext())
{
cout<< *tmp->GetObject()<<" , ";
}
try
{
SomeList.Reset();
}
catch(...)
{
cout<<"ERRRORRRRR"<<endl;
}
return 0;
}
</code>
G_S
|
|
|
|
|
You will notice that the error is actually due to Stack Overflow since Reset recursively calls the destructor, which calls the next destructor which... you get the idea.
The problem really is that your linked list is incorrect. Your nodes are linked lists? Your CLinked seems to try to be both a node and a linked list. There are other issues as well, but first you should go look at how other people implement linked lists.
eg.
template<class T>
class LinkedList
{
public:
class Node
{
public:
Node* GetNext();
Node* GetPrev();
: :
private:
T element;
Node *pNext;
Node *pPrev;
}
void Reset();
: :
private:
Node *m_pHead;
Node *m_pTail;
int m_nCount;
: :
}
-- modified at 23:36 Thursday 8th June, 2006
|
|
|
|
|
I've looked all over this site for controls or classes or anything to display text in a C++/MFC application. I would like to display characters that are at least 1 inch by 1 inch in size to be able to see them from wayyyyyyyyyy across the room.
Anyone have any ideas????
Thank you in advance
Pierre
|
|
|
|
|
I would create a font the size you need it
this steps i hope will help you
The bellow is only if not on multiple monitors
hdc = GetDC(NULL);
nHeight = GetDeviceCaps(hdc, LOGPIXELSY); // returns the number of pixels per logical inch along the screen height.
ReleaseDC(NULL,hdc);
so you can create a font with the result of it wich should be exactly 1 in.
hFont=CreateFont(nHeight,0,0,0,/*FW_BOLD*/0,0,0,0,0,0,0,0,0,"Georgia");
and then to draw it in a window use
DrawText(.....);
G_S
|
|
|
|
|
Almost... You'll need to use -nHeight , otherwise the height is specified in points, not pixels.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Dear all,
DirectSound allows us to play WAV from both file and stream. However, it cannot play Mp3 file. DirectShow is able to play Mp3 file. So how can I play Mp3 from a stream?
Thanks in advance.
|
|
|
|
|
i dont know Directshow playing audio.DirectAudio can play mp3s.
i'm not really interested about it.so i cant say how.
Kanchana
|
|
|
|
|
Exactly what are you trying to accomplish here? For DirectShow the whole Mp3 file isn't loaded into the buffer when you try to play it. If you have some Mp3 data in your application and would like to play this without writing to disk you would probably have to write your own source filter.
|
|
|
|
|
Yes, that is exactly what I needed. I have a buffer in memory and I know for sure it is in Mp3 format. Then I want to play it without saving to disk. Can you tell me more about the filter? Thanks!
|
|
|
|
|
You can get the DirectShow wizard to generate the boilerplate code for a push source filter and start from there. http://tmhare.mvps.org/downloads.htm[^] There is also a Bouncing Ball source filter sample in the SDK. Aside from that you would probably need to ask a more specific question.
|
|
|
|
|
if you want to play mp3 you can use MCI functions
whitesky
|
|
|
|
|
I'm not sure mci functions can play a buffer in Mp3 format. Surely, MCI functions are the best approach to play Mp3 files. But in my case, I'm not sure they work. Anyway, thanks for your response.
Regards,
|
|
|
|
|
The control I wanted to use (CWGraph from National Instruments) doesn't let the Cdialog on which it is placed,show up when the dll is run. What other options do I have to display some rapidly varying data dynamically on a form within a dll? VC6
Thanks,
sb
|
|
|
|