|
Here is what use in my MDI applications:
CMDIFrameWnd* pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
CMDIChildWnd* pChild = (CMDIChildWnd*)pFrame->GetActiveFrame();
CMyView* pView = (CMyView*)pChild->GetActiveView();
CMyDoc* pDoc = (CMyDoc*)pChild->GetActiveDocument();
|
|
|
|
|
oh thanks!
i was mistaking:
CFrameWnd *pFrameWnd = GetTopLevelFrame();
CView *pView = pFrameWnd->GetActiveView();
and i wondered why it returned NULL. now i changed it into:
Ct2View *AcToolCtrl::pr_getActiveView()
{
CView *pView = GetTopLevelFrame()->GetActiveFrame()->GetActiveView();
ASSERT_KINDOF(Ct2View, pView);
return (Ct2View *)pView;
}
and it worked.
|
|
|
|
|
Hi,
this message window pop up in my application.
and point out on free.c
on this location
retval = HeapFree(_crtheap, 0, pBlock);
if (retval == 0)
{
errno = _get_errno_from_oserr(GetLastError());
}
and the call stack is
ntdll.dll!77c90004()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!77d2cad0()
ntdll.dll!77ce7a57()
ntdll.dll!77cbb0cd()
ntdll.dll!77cbafd8()
ntdll.dll!77caa5a4()
kernel32.dll!764e3f01()
kernel32.dll!764e3f01()
> Test.exe!free(void * pBlock=0x3cba86c8) Line 110 C
Test.exe!CMemFile::Free(unsigned char * lpMem=0x3cba86c8) Line 118 + 0x8 bytes C++
Test.exe!ATL::CStringData::Release() Line 113 C++
Test.exe!ATL::CSimpleStringT<char,0>::operator=(const ATL::CSimpleStringT<char,0> & strSrc="10022*Socket Error") Line 300 C++
Test.exe!CSmtp_Mon_Thread::SmtpResponseThread(ATL::CStringT<char,StrTraitMFC<char,ATL::ChTraitsCRT<char> > > URL_Name="http://dofev.de", unsigned int Port=1018857688) Line 155 + 0x1d bytes C++
Test.exe!CSmtp_Mon_Thread::OnSmtpTimer(unsigned int idEvent=7843, long dwTime=15468593) Line 69 C++
Test.exe!CWinThread::DispatchThreadMessageEx(tagMSG * pMsg=0x083eb828) Line 771 C++
Test.exe!AfxInternalPreTranslateMessage(tagMSG * pMsg=0x083eb828) Line 227 + 0xd bytes C++
Test.exe!CWinThread::PreTranslateMessage(tagMSG * pMsg=0x083eb828) Line 777 + 0x8 bytes C++
Test.exe!AfxPreTranslateMessage(tagMSG * pMsg=0x083eb828) Line 255 C++
Test.exe!AfxInternalPumpMessage() Line 178 + 0xf bytes C++
Test.exe!CWinThread::Run() Line 629 + 0x7 bytes C++
Test.exe!_AfxThreadEntry(void * pParam=0x0033eef8) Line 126 C++
Test.exe!_callthreadstartex() Line 348 + 0x6 bytes C
Test.exe!_threadstartex(void * ptd=0x07e35898) Line 326 + 0x5 bytes C
kernel32.dll!764eeccb()
ntdll.dll!77cfd24d()
ntdll.dll!77cfd45f()
please help me.
|
|
|
|
|
Looks like something wrong is happen in a library, resulting in a multiple deletion of a block, of in an access to an already delete piece of memory.
Probably, upon a previous message handling, you deleted something the library still needs.
2 bugs found.
> recompile ...
65534 bugs found.
|
|
|
|
|
please tell me how can i resolve it
|
|
|
|
|
The only thing I can see from your information is that HeapFree fails (what was the text of the message ???) when invoked by a number of library function that are in consequence to the OnSmtpTimer invocation, that -at certain point- assign and destroy a CMemFile that is no more there.
What does all that to happen, I don't know.
I don't see your code, your screen, your mind!
I can only suggest to investigate about what was OnSmtpTimer trying to assign and verify if (and where) something else destroyed it before. That's what debuggers are for.
Does "http://dofev.de" and "10022*Socket Error" means something to you?
Probably a CMemFile is attempted to be deleted after that point (look like after a socket connection failed). But ... it seems it is no more there. Probably it is something related a previous iteration of the message loop (so it is not on the stack anymore ...)
2 bugs found.
> recompile ...
65534 bugs found.
|
|
|
|
|
Hi
i got function name and argument type from UnDecorateSymbolName() method using vc++ MAP file. But i want how to argument names with using VC++ MAP file?
any idea please?
Regards,
M.Mathivanan
|
|
|
|
|
|
Have you looked in a .map file to see what it contains? If you had you'd have found the following things:
- They're simple text files
- They contain the addresses of things assigned by the linker and (usually) the size of those things
- They don't contain (unless I completely missed it a couple of weeks ago when I last had to look in one) names of function parameters.
Information about parameter names is not generally available to the linker as the compiler sorts out the mapping of argument names to position on the stack/register assignment, the linker doesn't have to know it.
I've no idea what you need this information for but remember C++ is a compiled language that, unlike Java, doesn't support any sort of type reflection or introspection. If you want to find out names of parameters your best bet is to look in something that's generated for a debugger - e.g. a .pdb file under VC++ and use something like the Debug Information Access API (which I've only glanced at, it might be rubbish, I can't comment).
Cheers,
Ash
|
|
|
|
|
Thank you for your information
Regards,
M.Mathivanan
|
|
|
|
|
I want to use wxWidgets to develop UI,and use it in MFC.
Thank you gurus.
|
|
|
|
|
|
My current project needs to be supported by IKnownFolder.
But I've never programmed with this kind of interfaces.
So anyone could help?
I'll really appreciate it if you could give some links or codes on what files should be introduced in and how and the initialization codes.
Thanks in advance.
|
|
|
|
|
|
Hi
I am using UnDecorateSymbolName() method get function name and argument data type. but i want actual argument variable name? i try this code like
void ExtractCppSymbol(char *szDecoratedName)
{
char szFunc[512];
if ( UnDecorateSymbolName(szDecoratedName, szFunc, 512, UNDNAME_COMPLETE > 0 ))
{
cout<
|
|
|
|
|
As far as I know the argument names aren't in the decorated name, so there is NO way to extract them.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
i am using input mangled data from VC++ MAP file. This MAP file contains all details.
i parse MAP file and pass to UnDecorateSymbolName() method.
OR
how to pass input for argument name with mangle data?
|
|
|
|
|
The function and method names are decorated accordingly to the used calling convention, anyway what you can extract from a decorated name is, at most, the type of the formal parameters of a function (e.g. int , char * , struct MyStruct & , etc.), but not the name used in the source code.
|
|
|
|
|
Hi All
How can i check which OS is Install(xp,vista or Windows 7 etc) in System? Please help me
|
|
|
|
|
|
In addition to answer from Rejeesh, you can check out this[^] class. It does not support Windows 2008 Server and Windows 7 but the code could easily be updated in order to support these systems.
|
|
|
|
|
I am reading the TCP/IP Illustrated Volumn1 the Protocol. I find that is hard to acknowledge so many protocol. So I want to know which protocol are important for the network development.
Is the Volumn 2 needed to read?
|
|
|
|
|
You don't need to know every detail of the TCP/IP protocol stack for network development.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Good evening, CPallini
Do you think which protocols is important ?
|
|
|
|
|
It really depends on your needs. For instance, if you want to use sockets for developing a chat application then a general understanding of the TCP protocol would be required.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|