导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

切分窗口通信与线程冲突

fisi793419093 2010-08-14 05:36:32
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
m_wndSplitter.CreateStatic(this,2,2);
int Screen_Width = GetSystemMetrics(SM_CXSCREEN);
int Screen_Height = GetSystemMetrics(SM_CYSCREEN);
CSize panesize1(Screen_Width,72*Screen_Height/100);
CSize panesize2(Screen_Width,28*Screen_Height/100);
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CSeismic_CudaView), panesize1,pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CSliceViw), panesize1,pContext);
m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CControlView), panesize2,pContext);
m_wndSplitter.CreateView(1,1,RUNTIME_CLASS(CSliceControl), panesize2,pContext);
m_wndSplitter.HideSplitter();
return TRUE;
}


CView *CSeismic_CudaView::GetVolumeControlView()
{
CSeismic_CudaApp *pApp = (CSeismic_CudaApp *)AfxGetApp();
CMainFrame *pFrame = (CMainFrame *)pApp->m_pMainWnd;
CFormView *pView = (CFormView *)pFrame->m_wndSplitter.GetPane(1,0);
return pView;
}

我新开了个线程实现CSeismic_CudaView视图的显示,并与CControlView建立通信,用CControlView控制CSeismic_CudaView的显示, 在线程函数里调用了GetVolumeControlView() ,在执行到CFormView *pView = (CFormView *)pFrame->m_wndSplitter.GetPane(1,0);就中断了!在网上搜了好几天了,实在找不到好的解决方法!who can help me?
...全文
47 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bucherren 2010-08-15
这个可能是调用了mfc调用了sendmessage的关系,sendmessage是阻塞的,一般不建议在用户线程里使用sendmessage
回复
mayuhongthebest 2010-08-15
句柄我也要学 4楼的 能不能说清楚一点 学习学习
回复
fisi793419093 2010-08-14
能够具体点吗?另外一个类似程序,我是用指针做的,没出问题。可是现在这个很头疼
回复
最好传递CControlView的窗口句柄,然后通过句柄发送消息进行通信
回复
fisi793419093 2010-08-14
我开辟线程的方式是:AfxBeginThread(ComputeThreadProc1, GetSafeHwnd(),
THREAD_PRIORITY_NORMAL);


CSeismic_CudaView *d = (CSeismic_CudaView*)AfxGetMainWnd()->GetActiveWindow();
具体线程函数为:INT ComputeThreadProc1(LPVOID pParam)//线程函数1.。。。实现文件打开
{


d->Display_File(m_File_Name);
ProcessDisplay.ShowWindow(SW_HIDE);
delete d;
//delete m_File_Name;
return 0;
}
回复
Eleven 2010-08-14
不清楚你的线程里怎么做的,但是有一点,线程函数的参数不要传递MFC窗口类的指针,最好是窗口句柄HWND
回复
mayuhongthebest 2010-08-14
这个问题 我见过 我也不会 看看别人怎么解决的吧 顶
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……