将单文档切分的两个视图用多线程运行,也就是说两个视图各自运行,互不干扰
我一个视图来显示OPGL做的3D演示,另外一个是普通的视图,现在在普通视图上只要运行画图工作,OPGL那个部分就动不了了,有没有高手来帮忙解决一下啊
如果单文档的不行,多文档的怎么做啊,我就要求两个视图各自运行,互不干扰
我一个视图来显示OPGL做的3D演示,另外一个是普通的视图,现在在普通视图上只要运行画图工作,OPGL那个部分就动不了了,有没有高手来帮忙解决一下啊
如果单文档的不行,多文档的怎么做啊,我就要求两个视图各自运行,互不干扰
解决方案 »
- vc++6.0连接oracle10g 错误
- socket的内网与外网的通信
- 请教在不使用MFC支持的情况下连接数据库的方法
- 不停调用::AfxRegisterWndClass出现异常问题
- 关于字符串输入的问题!!!!!求助!!!!!!!
- VC中怎么用正则表达式,谢谢
- 问网络的问题?(答者有分)
- 当FindWindow()后,有没有可能对另外一个已经存在一个应用软件进行操作,比如给某个EDIT BOX附值?
- MFC ODBC 在调用Requery后,重建了记录集,但是我重新open这个记录集,不是本来的记录集,反而是Requery之后的记录集,怎么解决?
- DX,多边形分解三角形的算法,现已知多边形顶点(大于100),求顶点索引算法
- 求R树在数据库中的应用
- 请教一下如何删除XML文件的数据?
创建过程其实也简单,对话框先创建好,然后启动线程,在线程中做COM初始化和OPGL初始化,创建一个以对话框窗口为父窗口的窗口,设置好在父窗口上的位置即可。
static UINT Drawnormalproc(LPVOID p);
static UINT Drawopenglproc(LPVOID p);//2个线程的函数
CEvent DrawNormalEvent,DrawOpenglEvent; //2个线程的事件为
然后别忘了在构造函数里出使化为null;
在OnDraw里写
m_opengldraw=AfxBeginThread(Drawopenglproc,this,THREAD_PRIORITY_NORMAL,0,0,NULL); //m_Drawopenglproc是画opengl线程的函数名字,
m_normaldraw=AfxBeginThread(Drawnormalproc,this,THREAD_PRIORITY_NORMAL,0,0,NULL);//同上
DrawNormalEvent.SetEvent();
DrawOpenglEvent.SetEvent();
然后在
UINT CDataView::Drawnormalproc(LPVOID param)
{
CDataView* p=(CDataView*)param;
while (1) //这是个死循环为了这个线程一直在跑
{
::WaitForSingleObject(p->DrawNormalEvent.m_hObject,INFINITE);
//在这里添加你的顶层的绘图函数 ,p是CDataView的指针,你可以随意调用CDataView的函数了。 }
return 1;
}
没有仔细看啊,你可能还要稍微改一改。我也不确定自己写的一定对啊:)
如果单文档的不行,多文档的怎么做啊,我就要求两个视图各自运行,互不干扰