MFC程序设计上的一道练习 郁闷半天请高手指教
首先没有用文档视图支持,ChildView类从列表框类继承下来 目的是所记录文件在视图中可像在列表框内
一样一行一个排列 当单击某一行时 此行记录弹出(相信大家一定看过这个例子) 但现在问题是 我在记
录上双击没有反应 换句话说从列表框继承下的视图不支持双击事件 以下列出部分代码请高手指点
(好头疼,郁闷)
CChildView类:
BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CPhonesListBox::PreCreateWindow(cs))
{
return FALSE;
}
cs.dwExStyle |= WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
//cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
// ::LoadCursor(NULL, IDC_ARROW), reinterpret_cast<HBRUSH>(COLOR_WINDOW+1),
NULL);
//*********必须覆盖********
//必须覆盖原来从CWnd继承的一些个函数,才能保证以后引用列表框的功能
//覆盖了生成时的一个结构 还有OnPaint()函数
return TRUE;
}
CPhonesListBox类:
BEGIN_MESSAGE_MAP(CPhonesListBox, CListBox)
ON_WM_CREATE()
ON_CONTROL_REFLECT(LBN_DBLCLK,OnEditItem)
END_MESSAGE_MAP()
void CPhonesListBox::OnEditItem()
{
CEditDialog dlg;
CString strItem;
int nIndex = GetCurSel ();
GetText (nIndex, strItem);
int nPos = strItem.Find (_T ('\t'));
dlg.m_strName = strItem.Left (nPos);
dlg.m_strPhone = strItem.Right (strItem.GetLength () - nPos - 1);
if (dlg.DoModal () == IDOK) {
strItem = dlg.m_strName + _T ("\t") + dlg.m_strPhone;
DeleteString (nIndex);
AddString (strItem);
}
SetFocus ();
}