获取Runtime_Class(CView)句柄问题
正在做一个MFC的程序,遇到了这个问题,因为程序需要,于是用下面的代码创建子窗口:
m_PDoc=new CDoc();
m_PChildFrame2=new CChildFrame2();
CCreateContext context;
context.m_pNewViewClass=RUNTIME_CLASS(CView2);
context.m_pCurrentDoc=m_PDoc;
if(m_PChildFrame2->Create(NULL,NULL,WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, CRect(0,0,860,500),NULL,&context))
return;
m_PChildFrame2->ShowWindow(SW_SHOWMAXIMIZED);
m_PChildFrame2->InitialUpdateFrame(NULL,true);
//CDOC继承自CDocument ,CChildFrame2继承自CMDIChildWnd,CView2继承自CView
现在要从CChildFrame2中发送消息到CView2,问题出来了,在CChildFrame2中用 this->GetActiveView()返回NULL,但是此时视图已经处于显示状态。在主框架中用GetActiveFrame(),再用 GetActiveView()还是为NULL。
[解决办法]
设定一个全局变量CView2 pView;
在CView2初始化的时候加入pView = this;
然后再在CChildFrame2中使用this->SendMessage(。。。);
[解决办法]
加个句柄判断呢?m_hWnd
this->GetActiveView()->m_hWnd
GetActiveFrame()->m_hWnd
再试下这个函数
GetActiveWindow()->m_hWnd
请帮我顶顶。。。谢谢
http://topic.csdn.net/u/20090724/11/6e4ea566-f091-48f7-8772-3d83c4cbbbad.html
[解决办法]
CView2 是否创建成功...
[解决办法]
在CView2(或CView如果没有重载的话)的OnInitialUpdate在函数内设置断点。
如果没有运行到OnInitialUpdate函数内部,说明CView2创建失败