我有一段代码,基本任务是在TreeCtrl的一个项目被单击时执行一定的操作。我的CTreeCtrl是在程序运行过程中手动创建的,在98下面运行正常,但是在2000和XP下就不正确,表现为没有对应的操作。
另外,我有实现了一个很短的代码段,完全可行。
哪位大虾知道为什么么?出错的代码段:
void CExView::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here
CExDoc* pDoc=GetDocument();
HTREEITEM hsel=m_tr1->GetSelectedItem();
CMainFrame *pMain=(CMainFrame*)GetParentFrame(); CString str; if(hsel>=0)
{
str=m_tr1->GetItemText(hsel);
//GetDocument()->SetTitle(str);
} if(str=="Item1" )
{
pMain->Func1();
pDoc->showflag=false;
}
if(str=="Item2")
{
pMain->Func();
pDoc->showflag=false;
} *pResult = 0;
}
另外,我有实现了一个很短的代码段,完全可行。
哪位大虾知道为什么么?出错的代码段:
void CExView::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here
CExDoc* pDoc=GetDocument();
HTREEITEM hsel=m_tr1->GetSelectedItem();
CMainFrame *pMain=(CMainFrame*)GetParentFrame(); CString str; if(hsel>=0)
{
str=m_tr1->GetItemText(hsel);
//GetDocument()->SetTitle(str);
} if(str=="Item1" )
{
pMain->Func1();
pDoc->showflag=false;
}
if(str=="Item2")
{
pMain->Func();
pDoc->showflag=false;
} *pResult = 0;
}
解决方案 »
- ListCtrl设置背景图片被覆盖的问题
- 求问CPaintDC dc(this)
- 如何不用新线程而实现窗口在处理一时间比较长的函数时候仍然能响应基本的Windows消息?
- 关于list box这个控件的一个小问题,请帮忙看一下,谢谢!
- 建立FireMouseMove和WM_MOUSEMOVE的关系--如何得到Alt键状态?
- 串口读数据出现乱码,怎么解决?急!!!!
- 程序中有两个子窗口,子窗口1是基于CFormView,子窗口2是基于CScrollView,问题一:怎样让窗口2调用窗口1的函数?问题二:如何动态更改窗
- 安装vs.net时提示插入的windows组件安装更新盘是什么盘??
- 一个小问题,有人知道吗?
- ATL COM的dll,全局引用计数在哪里
- AfxBeginThread设置工作线程的问题,求救!!
- 请回答http://expert.csdn.net/Expert/topic/2059/2059218.xml?temp=.2029993问题的兄弟来接分!
头文件中手动消息映射,在protected中
afx_msg void OnSelchangedTree2(NMHDR* pNMHDR, LRESULT* pResult);
在cpp文件中有:
BEGIN_MESSAGE_MAP(CEx001View, CFormView)
//{{AFX_MSG_MAP(CEx001View)
……………………
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE2, OnSelchangedTree2)
//}}AFX_MSG_MAP
……………………
END_MESSAGE_MAP()最后就是上面的执行OnSelchangedTree2了,老大们看看少了什么没有
3x
只是不明白为什么用CFormView类在2000和xp下面就是不能用,而在98下面一切正常。
哪位老大知道的,麻烦看看,找到出错原因就结贴
就是我选择的基类是CFormView或者CDialog时,如果动态创建一些公共控件的话就会不能接受父窗体的消息。在NT平台下的问题,因此在2000和xp下有问题而98下就没有问题。想知道具体问题的话查MSDN
标题:
PRB: No ANSI Notifications from Control Created in OnCreate
工程做完拉.
来总结拉