|
Any debugger can handle mixed-language programs - the problem is getting it to recognize debugging symbols, and therefore match the assembled code up with the original source.
It sounds like your Ada program is built using GNAT. GNAT generates debug symbols in a format suitable for the Ada fork of GDB which is incompatible with anything else. The Microsoft C++ tools generate (by default) PDB files, which the GNU tools can't read (mainly because MS has never documented this format).
You might manage to get debugging symbols that gdb can read for your C/C++ code if you use gcc to compile it.
If you can somehow convince your Ada compiler to generate Microsoft-format debugging symbols, you can use the Visual Studio debugger if you have it - simply use File > Open Project and open the EXE file. If you don't, you could try using WinDBG from the Windows Debugging Tools[^]. It's in the same vein as gdb, but a bit more intelligible.
Stability. What an interesting concept. -- Chris Maunder
|
|
|
|
|
thanks mate, I'll give WinDBG a try
|
|
|
|
|
How can I add files to MRU in a dialog box app? I tried to override OnOpenRecentFile and OnUpdateRecentFile which i have found in appui.cpp but nothing happens.
|
|
|
|
|
Have you tried CRecentFileList class?
(see MSDN for details)
Robert-Antonio
"CRAY is the only computer, which runs an endless loop in just 4 hours"
|
|
|
|
|
Yes.I have done a key in Registry and another key called Recent File List and there are all my 5 MRU, but i want to put them in a menu to appear also there .I have put ID_FILE_MRU_FILE1 but MRU don't appear.This is my problem.
Thanks.
|
|
|
|
|
Handle an UPDATE_COMMAND_UI message for the ID_FILE_MRU_FILE1 menu item:
void CMainFrame::OnUpdateFileMruFile1(CCmdUI* pCmdUI)
{
m_MRU.UpdateMenu(pCmdUI);
} where m_MRU is your CRecentFileList object.
Robert-Antonio
"Friends come and leave, but teddybears stay in forever."
|
|
|
|
|
I have a dialog box, not a doc/view architecture.
|
|
|
|
|
This solution isn't dependent on doc/view. If you want to add MRU to dialog box, use simply CYourDialog instead of CMainFrame
Robert-Antonio
"Love without sex is like a fish without antlers"
|
|
|
|
|
Thanks a lot.It works.But I have another problem.
When I open the first file from MRU menu it works,but if i want to open the rest of 4 files I get an assert:appui.cpp line 130,ASSERT(m_pRecentFileList != NULL);
But I don't have anything with BOOL CWinApp::OnOpenRecentFile(UINT nID).
I did my own function.
void CMyRtfDlg::OnFileMruFile1()
{
OnOpenRecentFile(ID_FILE_MRU_FILE1);
}
// added on 22 Apr 2004
void CMyRtfDlg::OnUpdateFileMruFile1(CCmdUI* pCmdUI)
{
m_pMRU->UpdateMenu(pCmdUI);
}
// @added on 22 Apr 2004 from appui.cpp
// @for MRU
BOOL CMyRtfDlg::OnOpenRecentFile(UINT nID)
{
ASSERT(m_pMRU!= NULL);
ASSERT(nID >= ID_FILE_MRU_FILE1);
ASSERT(nID < ID_FILE_MRU_FILE1 + (UINT)m_pMRU->GetSize());
int nIndex = nID - ID_FILE_MRU_FILE1;
ASSERT((*m_pMRU)[nIndex].GetLength() != 0);
TRACE2("MRU: open file (%d) '%s'.\n", (nIndex) + 1,
(LPCTSTR)(*m_pMRU)[nIndex]);
OnFileOpen((*m_pMRU)[nIndex]);
return TRUE;
}
|
|
|
|
|
Hi,
I am parsing serveral avi files and displaying the data frame by frame in
a CListCtrl. I am using the Replace function to replace each consecutive image.
How can I speed this operation up? Most of the time is spent copying the data into the
ListCtrl and the internal BitBlt which it is doing.
Regards,
|
|
|
|
|
Hi
In my aplication I am using a thread that waits for processes to signal their kernel objects while exiting.
I want to add the objects in the wait aray in WaitForMultipleObjects in run time dynamically.
Currently I am using the poor design that I kill the wait thread, update the array and start new thread again
Any good or better suggestion.
Rajeev
|
|
|
|
|
Cant you allocate the array using calloc and reallocating it at need using realloc while updating the count?
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
You can insert a Manual Event (probably at the beginning of the signal array. Then signal
this event to stop the Wait. Detect that it was your "Ahem, I want to change things" event,
rebuild the array, and loop back to the wait....?
Something like...
Rebuild_Event_Array ();
while (1)
{
dwWait = WaitForMulti (pSyncObjects, nSyncObjects, INFINITE);
if (dwWait == WAIT_OBJECT_0)
{
Rebuild_Event_Array ();
}
else if (dwWait > WAIT_OBJECT_0 && dwWait < (WAIT_OBJECT_0 + nSyncObject) )
Dispatch_Custom_Event ();
else
{
HandleError ();
break;
}
}
etc.
where Rebuild_Event_Array () puts together an array with your Rebuild event at
the beginning.
Iain.
|
|
|
|
|
I'm haveing a lot of weird problems with a new app. I tried to create CComboBox controls and was able to add strings which I could cycle through with the arrow keys. However clicking on the arrow on the right of the box would not drop down the list so I switched to a list box. It works but for some strange reason, calling the ResetContent() method doesn't clear the items in the list box. Oddly, calling the GetCount() method shows the correct value before (n=3 or something.) and after (n = 0). The result is a list box with duplicate entries in the list box.
The code snippet is below.
Something I'm doing wrong?
{
// populate the databases ListBox
vector <cstring *=""> v;
vector <cstring *="">::iterator i;
n = _mlbDBListBox.GetCount();
_mlbDBListBox.ResetContent();
n = _mlbDBListBox.GetCount();
v = _myDBBrowser->GetDBs();
for (i = v.begin(); i != v.end(); i++)
_mlbDBListBox.AddString((*i)->GetString());
_mlbDBListBox.SetCurSel(0);
}
Using Visual Studio .Net 2002 (VC++ 7.0)
|
|
|
|
|
Are you sure that the vector does not contain the duplicates?
"The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)
|
|
|
|
|
Yes, I thought about a corrupted vector or a problem with the vector iterator but I got the same behavior even when I added strings by hand i.e. _m.AddString("One") _m.AddString("Two"), etc.
|
|
|
|
|
So by simply calling AddString() once, two entries are added to the listbox?
"The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)
|
|
|
|
|
Sorry, I was confusing the CComboBox/ListBox behavior. The list box worked correctly when initially loaded with strings, either by hand or from the vector. When I tried to refresh the data in the list box, I called the ResetContent method of the list box. It returned values that indicated all the items had been deleted. The I added new items but it then displays two sets of items.
|
|
|
|
|
Very strange. Can you create a new dialog-based application that mimicks this behavior? Trying to scale the problem down to just a few relevant lines of code is sometimes very helpful.
"The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)
|
|
|
|
|
Got it worked out. Weird. I was creating controls at work on an XP machine. Carried it home to my 2000 machine and the controls were all created correctly except that they had zero sizes. Once I went in and "resized" them with the InterfaceBuilder everything was fine.
Thanks
|
|
|
|
|
Dear all,
I writting an application using MFC.
Now I need to access to the View object from the App class.
Could you please tell me how.
Thanks a lot in advance.
-Kien Bui
|
|
|
|
|
In SDI app: ((CFrameWnd*)AfxGetMainWnd())->GetActiveView()
In MDI app: ((CMDIFrameWnd*)AfxGetMainWnd())->GetActiveFrame()->GetActiveView()
Robert-Antonio
"Love without sex is like a fish without antlers"
|
|
|
|
|
Thank you very much!
-Kien Bui
|
|
|
|
|
How to get 'IRowsetFind' interface in oledb sdk !
dear all:
i will use following code in my program(C++) :
discover 'pICommandProperties->SetProperties(1,rgInitPropSet);' return failed code 'DB_S_ERRORSOCCURRED'
so 'pIRowset->QueryInterface(IID_IRowsetFind,(void **)&pIRowsetFind);' return failed!
dear all, please help me! how to get 'IRowsetFind' interface in oledb sdk , and how to use 'IRowsetFind->FindNextRow()'
InitProperties[0].dwPropertyID=DBPROP_IRowsetScroll;
InitProperties[0].dwOptions=DBPROPOPTIONS_REQUIRED;
InitProperties[0].dwStatus=DBPROPSTATUS_OK;
InitProperties[0].colid=DB_NULLID;
InitProperties[0].vValue.vt=VT_BOOL;
InitProperties[0].vValue.lVal=VARIANT_TRUE;
InitProperties[1].dwPropertyID=DBPROP_IRowsetFind;
InitProperties[1].dwOptions=DBPROPOPTIONS_REQUIRED;
InitProperties[1].dwStatus=DBPROPSTATUS_OK;
InitProperties[1].colid=DB_NULLID;
InitProperties[1].vValue.vt=VT_BOOL;
InitProperties[1].vValue.lVal=VARIANT_TRUE;
rgInitPropSet[0].cProperties=2;
rgInitPropSet[0].guidPropertySet=DBPROPSET_ROWSET;
rgInitPropSet[0].rgProperties=InitProperties;
hr=pICommandText->QueryInterface(IID_ICommandProperties,(void **)&pICommandProperties);
hr=pICommandProperties->SetProperties(1,rgInitPropSet);
if (DB_S_ERRORSOCCURRED==pICommandProperties->SetProperties(1,rgInitPropSet))
cout<< "test";
if(FAILED(hr))
{
cout<< "OLEDB Error !\r\nExecute Failed To Set Rowset Properties";
}
hr = pIRowset->QueryInterface(IID_IRowsetFind,(void **)&pIRowsetFind);
if(FAILED(hr))
{
cout << "Failed to get IID_IRowsetFind interface.\n";
cout << endl;
} //end if
Laker
|
|
|
|
|
Hi guys
I'm having troubles with resources in w98 and one of the questions is the following.
I'm using a resource meter to know the GDI resources available, and when I open a CDialog with a lot of controls (>100), the resources go down and when I close it the resources don't raise again until I close the app.
Is this normal? If not, what can be the cause?
I'm using a lot of CLabel controls (derivesd from CStatic controls classes get it here in codeproject)
Best Regards
Doc
|
|
|
|