Click to See Complete Forum and Search --> : Need help with this code


Sophie
April 28th, 1999, 02:52 PM
What I'm trying to accomplish is to find the selected Item and make sure it's a file not a directory. And if it's a file I get control of the Multimedia control to paly the wave file selected.

What am I doing wrong? If you require more info let me know

Thank you in advance

void CVRSessionView::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
CFrameWnd* pFrame= GetParentFrame();
if( pFrame != NULL && pFrame->IsKindOf(RUNTIME_CLASS(CMainFrame))) {
CListCtrl &ctlList = GetListCtrl();
CObject *pObject= (CObject *) ctlList.GetItemData( pNMListView->iItem); //ASSERT ERROR HERE
if(pObject->IsKindOf(RUNTIME_CLASS(CFileInfo))){
Cmci mci; //Multimedia control
mci.SetDeviceType("WaveAudio");
//mci.SetFileName(fileToPlay);
mci.SetCommand("open");
}

}

class CFileInfo :public CObject
{
public:
void SetFileInfo(File &fileInfo);
File GetFileInfo();
CFileInfo();
virtual ~CFileInfo();
DECLARE_DYNAMIC (CFileInfo);

private:
File m_fileInfo;
};

CFileInfo::CFileInfo()
{

}

CFileInfo::~CFileInfo()
{

}

File CFileInfo::GetFileInfo()
{
return m_fileInfo;
}

void CFileInfo::SetFileInfo(File &fileInfo)
{
m_fileInfo = fileInfo;
}



*pResult = 0;
}

sally
April 28th, 1999, 08:00 PM
What is it that is not working?

sally

Sally
April 28th, 1999, 08:00 PM
What is it that is not working?

sally

Sophie
April 29th, 1999, 10:11 AM
Look for if(list.size() == 1)

I need to get the multimedia control i've created in the CMainFrame::OnCreate
The code for the multimedia start with "#define SNAP_WIDTH 389"

How do I go from the view to the mainframe?

Thanks in advance

void CVRSessionView::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
vector<HTREEITEM> list;
CFrameWnd* pFrame= GetParentFrame();
if( pFrame != NULL && pFrame->IsKindOf(RUNTIME_CLASS(CMainFrame))) {
CListCtrl &ctlList = GetListCtrl();
int index= ctlList.GetNextItem( -1, LVNI_SELECTED);
while( index >= 0) {
CObject *pObject= (CObject *) ctlList.GetItemData( index);
HTREEITEM hTreeItem= (HTREEITEM) ctlList.GetItemData( index);
if( pObject != NULL )
list.push_back( hTreeItem);
index= ctlList.GetNextItem( index, LVNI_SELECTED);

}
if(list.size() == 1){



}

}

*pResult = 0;
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_filtertab.Create(this,IDD_Filtertab,CBRS_TOP,1111);


if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}

// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_filtertab.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
DockControlBar(&m_filtertab);
///Added code


#define SNAP_WIDTH 389 //the width of the Multimedia
//set up the Multimedia control as a snap mode select box //
//First get the index of the placeholder's position in the toolbar
int index = 0;
CRect rect;
while(m_wndToolBar.GetItemID(index)!=IDP_PLACEHOLDER2) index++;
//next convert that button to a seperator and get its position
m_wndToolBar.SetButtonInfo(index, IDP_PLACEHOLDER2, TBBS_SEPARATOR, SNAP_WIDTH);
m_wndToolBar.GetItemRect(index, &rect);

// then .Create the multimedia control and show it

if (!m_wndToolBar.m_wndSnap.Create(NULL,WS_CHILD|WS_VISIBLE,rect, &m_wndToolBar, IDP_PLACEHOLDER2))
{
TRACE0("Failed to create Multimedia Control\n");
return FALSE;
}
m_wndToolBar.m_wndSnap.ShowWindow(SW_SHOW);
m_wndToolBar.m_wndSnap.SetEjectVisible(FALSE);
m_wndToolBar.m_wndSnap.SetRecordVisible(FALSE);
m_wndToolBar.m_wndSnap.SetPrevVisible(FALSE);
m_wndToolBar.m_wndSnap.SetNextVisible(FALSE);
m_wndToolBar.m_wndSnap.SetEnabled(TRUE);
m_wndToolBar.m_wndSnap.SetAutoEnable(TRUE);
m_wndToolBar.m_wndSnap.SetCommand("close");


return 0;
}
class CMainFrame : public CFrameWnd
{

protected: // create from serialization only
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)

// Attributes
public:

// Operations
public:

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMainFrame)
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
virtual void ActivateFrame(int nCmdShow = -1);
//}}AFX_VIRTUAL

// Implementation
public:

CReponseFilterTab & GetFilterTab();
virtual ~CMainFrame();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif

protected: // control bar embedded members
CStatusBar m_wndStatusBar;
CMainToolBar m_wndToolBar; //use to be CToolBar

// Generated message map functions
protected:
CSplitterWnd m_wndSplitter;
virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
//{{AFX_MSG(CMainFrame)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
CReponseFilterTab m_filtertab;

};
class CMainToolBar : public CToolBar
{
// Construction
public:
CMainToolBar();

// Attributes
public:
Cmci m_wndSnap;
// Operations
public:

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMainToolBar)
//}}AFX_VIRTUAL

// Implementation
public:
virtual ~CMainToolBar();

// Generated message map functions
protected:
//{{AFX_MSG(CMainToolBar)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG

DECLARE_MESSAGE_MAP()
};