切分窗口通信与线程冲突
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?
{
// 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?
...全文
相关推荐
C++ MFC 线程与窗口 SendMessage
ON_MESSAGE 使用方法, 一个线程工作函数中向窗口发送消息,SendMessage 使用方法.
C# Winform Socket实现轻量级即时通信实例详解
网络通信是工业自动化和物联网场景的基础能力,而TCP协议作为面向连接的可靠传输协议,是构建稳定数据通道的首选。在实际工程中,Socket编程常被用于实现局域网内的点对点消息交互,其核心挑战在于消息边界的划分、异步I/O的调度以及连接生命周期的管理。通过设计长度前缀与JSON负载的帧结构,可有效解决TCP粘包拆包问题;引入心跳机制能够及时清理失效连接,保障服务端稳定。本文结合C# Winform项目实例,讲解如何基于Socket快速构建一套轻量级即时通信工具,覆盖服务端连接管理、客户端异步收发、UI线程安全更
VC 线程中如何操作窗口
详细解释了VC++多线程中如何操作窗口。
多线程之间的线程通信
利用一个小型游戏的服务器和客服端之间的信息通信来介绍多线程之间的信息通信,以及通信可能存在的危险。
MFC窗口通信
MFC通信。。。。。。。Sendmessage。。。。。


