首先没有用文档视图支持,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 ();}
(好头疼,郁闷)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 ();}
解决方案 »
- 如何更改CMFCToolBar的图标呀 在线等
- VS2008中 进度条控件如何去掉刻度?
- 难题,请问我发送一个文件已经成功,但是接收端存在收不到这个文件的情况不?如果存在,怎么解决这种问题呢?在线等!
- -----CSDN让你技术硬起来,CSYN让你腰包鼓起来------------
- 关于_access()函数,在WinXP系统下,更改文件夹图标后,十分怪异的问题
- 怪??? 在InstallShield Professional 6.1 怎么不能在开始菜单里创建快捷方式!!!
- 有谁见过这样的编译问题?
- 关于光驱的相关问题
- 请问有没有铁岭的朋友
- 请教高手,如何改变View的颜色
- 如何实现HTTP上传文件,server 端用asp 或jsp或其他服务器脚本接收的那种.
- 一个关于文档/视图/框架 的简单问题
要实现你所描述的功能,建议你的视图类从CListView派生,实现起来比较简单,
响应以下消息:
NM_DBCLICK 左键双击
NM_CLICK 左键单击
NM_RCLICK 右键单击
应为你的类没有CS_DBLCLKS风格
CPhonesListBox, CListBox
可是我的类是从CListBox下继承来的 应当支持双击啊