// MsDevCallerListCtrl.cpp : implementation file
//
#include "stdafx.h"
#include <atlbase.h>
#include "MsDevCallerListCtrl.h"
#include <msvc6/testrunner/TestRunner.h>
#include <msvc6/DSPlugin/TestRunnerDSPluginVC6.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// MsDevCallerListCtrl
MsDevCallerListCtrl::MsDevCallerListCtrl()
: m_lineNumberSubItem( 3 )
, m_fileNameSubItem( 4 )
{
m_comInitialized = SUCCEEDED( CoInitialize(NULL) );
}
MsDevCallerListCtrl::~MsDevCallerListCtrl()
{
if ( m_comInitialized )
CoUninitialize();
}
void
MsDevCallerListCtrl::setLineNumberSubItem( int subItemIndex )
{
m_lineNumberSubItem = subItemIndex;
}
void
MsDevCallerListCtrl::setFileNameSubItem( int fileNameItemIndex )
{
m_fileNameSubItem = fileNameItemIndex;
}
BEGIN_MESSAGE_MAP(MsDevCallerListCtrl, CListCtrl)
//{{AFX_MSG_MAP(MsDevCallerListCtrl)
ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// MsDevCallerListCtrl message handlers
void MsDevCallerListCtrl::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)
{
HRESULT hr = S_OK;
int hotItem = 0;
CComPtr< ITestRunnerDSPlugin> pIDSPlugin;
hr = CoCreateInstance( CLSID_DSAddIn, NULL, CLSCTX_LOCAL_SERVER, IID_ITestRunnerDSPlugin,
reinterpret_cast< void**>(&pIDSPlugin));
if ( SUCCEEDED( hr))
{
CPoint pt;
UINT flags = 0;
CString lineNumber, fileName;
GetCursorPos( &pt);
ScreenToClient( &pt);
// some dirty hack to get some selection
// should get the border-width + 1, but WINDOWINFO
// is not supported in Win95
pt.x = 5;
hotItem = HitTest( pt, &flags);
lineNumber = GetItemText( hotItem, m_lineNumberSubItem);
fileName = GetItemText( hotItem, m_fileNameSubItem);
pIDSPlugin->goToLineInSourceCode( CComBSTR( fileName), _ttoi( lineNumber));
}
*pResult = 0;
}
syntax highlighted by Code2HTML, v. 0.9.1