切分窗口通信与线程冲突

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?
...全文
78 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
这个问题 我见过 我也不会 看看别人怎么解决的吧 顶

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧